2012-05-02 84 views
0

我创建的形式,我有以下错误:错误:调用一个成员函数getTitleName()一个非对象

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> 

回答

0

尝试is_object ($ planbook)

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

+0

嗨,仍然有同样的问题。任何想法。 – user1343376

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来自哪里)呢?
  • 那么主模板(因为你给我们一个部分,以及包含这个部分的模板)呢?
+0

嗨,谢谢你解决了这个问题,但我提交了表格。 500 |内部服务器错误| Doctrine_Connection_Mysql_Exception SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败('ned'.'planbook',CONSTRAINT'planbook_personal_id_personal_id' FOREIGN KEY('personal_id')REFERENCES'personal' 'id')ON DELETE CASCADE)。此错误正在提交 – user1343376

+1

这是另一个错误,我们不知道您的所有项目,您的模型等。因此,如果您需要一些帮助,请尝试查找解决方案**首先**,然后,如果你没有找到,给我们所有的信息,所以我们可以帮助你。但**请**,不要只说“你的解决方案有效,但我得到了一个新的错误,但没有尝试纠正它”。我们不是心灵的! – j0k

相关问题