验证不同控制器动作symfony中的表单

时间:2015-10-14 07:53:09

标签: php forms validation 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));
            }
(...)

问题是永远不会调用第二个动作中的验证。关于如何让这个工作的任何想法?

1 个答案:

答案 0 :(得分:4)

如果您想要在其他网址上验证表单,则应添加表单操作:

position

ajaxAddQuestionFormAction

编辑行动路线:

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