0

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

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>
4

2 回答 2

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 和 name,
  • 如果对象存在,确定是否必须设置值
  • ETC ..

每件事都用表格完成:

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

阅读与表格相关的完整文档。另外,不要忘记将您的错误的所有代码提供给我们。在这里,您只给我们一个部分模板。

  • 动作呢?
  • 表单类(从何$form而来)呢?
  • 主模板怎么样(因为你给了我们一个部分,以及包含这个部分的模板)?
于 2012-05-02T07:29:39.780 回答
0

试试 is_object($planbook)

教义通常会返回一些东西,所以 is_null 或 isset 可能不是最好的主意

于 2012-05-02T06:32:44.157 回答