0

私は Symfony2 を使い始めたばかりです。twig を学ぶ必要はなく、フォームを php で実装することにしました。次のように、The Bookの指示に従いました。

コントローラーで:

public function editAction($id)
{
    $em = $this->getDoctrine()->getEntityManager();

    $entity = $em->getRepository('MyBundle:MyEntity')->find($id);

    if (!$entity) {
        throw $this->createNotFoundException('Unable to find MyEntity entity.');
    }

    $editForm = $this->createForm(new MyEntityType(), $entity);
    $deleteForm = $this->createDeleteForm($id);

    return $this->render('MyBundle:MyEntity:edit.html.php' array(
        'entity'      => $entity,
        'edit_form'    => $editForm->createView(),
        'delete_form'  => $deleteForm->createView()
    ));
}

そして edit.html.php で:

<form action="<?php echo $view['router']->generate('myentity_update', array('id'=>$entity->getId()))?>" method="post" <?php echo $view['form']->enctype($editForm) ?>>

   <?php echo $view['form']->widget($editForm)?>

  <p>
    <button type="submit">Save Changes</button>
  </p>
</form>
<ul class="record_actions">
<li>
    <a href="<?php $view['router']->generate('myentity') ?>">
        Back to the list
    </a>
</li>
<li>
    <form action="<?php $view['router']->generate('myentity_delete', array('id'=>$entity->getId()) ) ?>" method="post">
        <?php echo $view['form']->widget($deleteForm)?>
        <button type="submit">Delete</button>
    </form>
</li>

フォームを表示しようとすると、次のエラーが表示されます: Notice: Undefined variable editForm

私の知る限り、The Bookに記載されている指示に正確に従っています。アクションとテンプレートで $editForm を $form に置き換えるか、テンプレートで $editForm を edit_form に置き換えようとしましたが、言うまでもなく、どちらも機能しませんでした。

次に何を試すべきかについての提案をいただければ幸いです (または、少なくともそのための指示が正しいように思われるため、小枝の学習に辞任する必要があるかもしれません)。

4

1 に答える 1

1

変数を次のようにビューに渡しますedit_form(配列キーはビューで使用する変数の名前です):

return $this->render('MyBundle:MyEntity:edit.html.php' array(
    'entity'      => $entity,
    'edit_form'    => $editForm->createView(),
    'delete_form'  => $deleteForm->createView()
));

しかし、あなたはそれをあなたの見解で次のように参照します$editForm

<form action="<?php echo $view['router']->generate('myentity_update',
    array('id'=>$entity->getId()))?>" method="post" <?php echo $view['form']->enctype($editForm) ?>>

edit_form両方( vs )で同じアプローチを決定editFormすれば、うまくいくはずです。たとえば、ビューに'edit_form'なり$edit_form、同様にに'editForm'なり$editFormます。

于 2012-05-01T08:45:23.513 に答える