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

is_object($planbook) を試す

Doctrine は通常何かを返すので、is_null または isset は最良のアイデアではないかもしれません

于 2012-05-02T06:32:44.157 に答える
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() ?>

フォームに関連する完全なドキュメントをお読みください。また、エラーのすべてのコードを提供することを忘れないでください。ここでは、部分的なテンプレートのみを提供します。

  • アクションはどうですか?
  • フォームクラスはどうですか(どこから$form来るのか)?
  • メインのテンプレートはどうですか (パーシャルと、このパーシャルを含むテンプレートを提供したため) ?
于 2012-05-02T07:29:39.780 に答える