2012-05-01 15 views
0

私はちょうどSymfony2を使い始めています。私は小枝を学ばなくても、自分のフォームをPHPで実装することにしました。次のように私は、ブックの指示に従っ:symfony2形式の未定義変数

コントローラで:

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:未定義の変数editForm

私が知る限り、私は指示がThe Book。私は$ editFormを$ formと置き換えてみましたが、$ editFormをテンプレートのedit_formに置き換えてみました。

私は次に何を試してみるべきかについて非常に感謝しています(または、それについての指示が正しいと思われるので、私は小枝を学ぶために自分自身を辞さなければならないかもしれません)。

+0

コントローラーとhtmlの両方に完全なコードを追加してください。 –

+0

コントローラのeditAction関数のすべてのコードとテンプレートの完全コードを追加しました –

+1

@richsage oops、申し訳ありません。なぜ私は答えの横に目盛りに気付かなかったのかわからない –

答えて

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_formeditForm)の両方で同じ方法を使用してください。例えば、'edit_form'$edit_formとなり、同様に'editForm'$editFormとなる。

+0

パーフェクト!どうもありがとう! –