2012-05-01 2 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> 

내가 양식 I을 표시하려고 오류가 발생합니다 : Notice : 정의되지 않은 변수 editForm

제가 아는 한, 지시 사항은 01에 주어진대로 정확하게 따라 왔습니다.. 나는 $ editForm을 액션과 템플릿에서 $ form으로 바꾸거나 $ editForm을 템플릿에서 edit_form으로 대체하려고 시도했다.

나는 다음에 시도해야 할 것에 대한 제안을 매우 감사 할 것입니다. (또는 적어도 나뭇 가지를 배우는 것에 사념해야 할 수도 있습니다.

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

하지만 당신은 $editForm로보기에서 참조 :

+0

컨트롤러 및 HTML에 대한 전체 코드를 추가 할 수 있습니다. –

+0

컨트롤러의 editAction 함수에서 모든 코드를 추가하고 템플릿의 전체 코드를 –

+1

@richsage 죄송합니다. 죄송합니다. 지금 완료했습니다. 왜 내가 결코 대답 앞의 진드기를 알아 차리지 못했는지 확실하지 않다 –

답변

1

당신은 edit_form으로보기에 변수를 전달 (배열의 키는 뷰에서 사용할 수있는 변수의 이름은)

<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

완벽! 매우 감사합니다! –