2012-05-01 58 views
0

我剛剛開始與Symfony2。我不是不得不學習樹枝,而是決定在php中實現我的表單。我隨後在書的說明,具體如下:Symfony2 undefined變量形式

在控制器

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> 

當我嘗試顯示形式I獲取錯誤: 注意:未定義的變量editForm

據我所知,我完全按照他們在The Book。我試圖在動作和模板中用$ form替換$ editForm,或者在模板中用edit_form替換$ editForm - 不用說,這兩種工作都不起作用。

我非常感謝任何關於下一步我應該嘗試的建議(或者我可能不得不放棄自己學習樹枝,因爲至少對於這些說明似乎是正確的)。

+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_form vs editForm),你應該很好。例如'edit_form'在該視圖中變成$edit_form,並且類似地'editForm'變成$editForm

+0

之前的答案旁邊的刻度標記完美!非常感謝! –