错误:在非对象上调用成员函数getTitleName()

时间:2012-05-02 05:21:56

标签: symfony-1.4 symfony-forms

我创建了表单,我有以下错误:

Call to a member function getTitleName() on a non-object in C:\wamp\www\public_html\apps\frontend\modules\planbook\templates\_form.php on line 25

这是我的代码:

<form method="post" enctype="multipart/form-data" action="<?php echo  url_for((!isset($planbook) ? '@planbook_create' : '@planbook_update').(isset($planbook) ? '?id='.$planbook->getId() : '')) ?>">
  <table>
    <tfoot>
      <tr>
        <td colspan="2">
          &nbsp;<a href="<?php echo url_for('planbook/index') ?>">Back to list</a>
          <?php if (!$form->getObject()->isNew()): ?><?php endif; ?>

          <input type="hidden" id="planbook_id" name="planbook[id]"  value="<?php echo isset($planbook) ?  $planbook->getId() : ' '?>" />
          <input type="submit" value="Save" />
        </td>
      </tr>
    </tfoot>
    <tbody>
      <tr>
      <th>
        <lable for="planbook_titlename"> Title</label>
      </th>
      <td>
        <?php if(isset($editFormFields) && isset($editFormFields['titlename'])) :?>
          <input type="text" id="planbook_titlename" name="planbook[titlename]" value="<?php echo isset($planbook) ?  $planbook->getTitleName() : ''?>">
        <?php else: ?>
          <?php echo $planbook->getTitleName() ?>
        <?php endif; ?>
      </td>
      </tr>
      <tr>
        <th>
          <label for="planbook_place">Place</label>
        </th>
        <td>
          <?php if(isset($editFormFields) && isset($editFormFields['place'])) :?>
            <input type="text" id="planbook_place" name="planbook[place]" value="<?php echo isset($planbook) ? $planbook->getPlace() : ''?>">
          <?php else: ?>
            <?php echo $planbook->getPlace() ?>
          <?php endif; ?>
        </td>
      </tr>
    </tbody>
  </table>
</form>

2 个答案:

答案 0 :(得分:0)

尝试is_object($ planbook)

Doctrine通常会返回一些内容,因此is_null或isset可能不是最好的主意

答案 1 :(得分:0)

要解决您的错误,我想您需要在表单前面加上这一行:

$planbook = $form->getObject();

然后将所有isset($planbook)替换为! $planbook->isNew()


但是我认为你采取了错误的创建表单的方式。

例如,这个:

<?php if(isset($editFormFields) && isset($editFormFields['titlename'])) :?>
  <input type="text" id="planbook_titlename" name="planbook[titlename]" value="<?php echo isset($planbook) ?  $planbook->getTitleName() : ''?>">
<?php else: ?>
  <?php echo $planbook->getTitleName() ?>
<?php endif; ?>

您无需手动执行操作,例如:

  • 显示输入
  • 生成ID和名称,
  • 确定是否必须设置对象存在时的值
  • 等..

每件事都以表格完成:

<?php echo $editFormFields['titlename']->renderRow() ?>

read the full doc related to the form。而且,不要忘记给我们所有错误的代码。在这里,您只给我们一个部分模板。

  • 行动怎么样?
  • 表单类($form来自哪里)?
  • 主模板怎么样(因为你给我们一个部分,以及包含这个部分的模板)?