2015-10-14 48 views
1

我有一个控制器操作,将窗体返回到视图。提交表格时,此表格的验证需要在与返回表格的操作不同的操作中完成。验证表单在不同的控制器动作symfony

这是返回的形式

/** 
    * @Route("/AjaxAddQuestionForm/{section}") 
    * @Template 
    * @ParamConverter("section", class="AppBundle:Section") 
    */ 
    public function ajaxAddQuestionFormAction(Request $request, $section) 
    { 
     $question = new Question(); 
     $question->setSection($section); 
     $addQuestionForm = $this->createForm(new AddQuestionType(), $question); 

     return array(
      'section' => $section, 
      'addAjaxQuestionForm' => $addQuestionForm->createView(), 
     ); 
    } 

行动的样品,这是我目前想获得验证工作的操作。

/** 
    * @Route("/edit/{form}") 
    * @Template() 
    * @ParamConverter("form", class="AppBundle:Form") 
    */ 
    public function editAction(Request $request, $form) 
    { 
     $em = $this->getDoctrine()->getManager(); 

     (...) 

     $questionForm = new Question(); 
     $addQuestionForm = $this->createForm(new AddQuestionType(), $questionForm); 


     $addQuestionForm->handleRequest($request); 

     if ($addQuestionForm->isValid()) { 
      $em->persist($questionForm); 
      $em->flush(); 

      return $this->redirectToRoute('app_form_edit', array('form' => $form_id)); 
      } 
(...) 

问题是,第二个动作中的验证从不会被调用。任何想法如何我可以得到这个工作?

+0

你设置形式的行动来纠正路线? – malcolm

+0

这是什么意思?我应该怎么做? – Jaimy

+1

检查我的答案。 – malcolm

回答

4

,如果你想验证其他网址的形式,您应该添加表单操作:

ajaxAddQuestionFormAction

$addQuestionForm = $this->createForm(new AddQuestionType(), $question, 
    array(
     'action' => $this->generateUrl('edit_form') 
)); 

编辑行动路线:

*@Route("/edit", name="edit_form") 
+0

帮了我很多很多!非常感谢你。 – Jaimy