2012-05-02 83 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

相關問題