我有一个控制器动作,它将一个表单返回给视图。提交表单时,此表单的验证需要在与返回表单的操作不同的操作中完成。
这是返回表单
的操作示例 /**
* @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 :(得分:4)
如果您想要在其他网址上验证表单,则应添加表单操作:
在position
:
ajaxAddQuestionFormAction
编辑行动路线:
$addQuestionForm = $this->createForm(new AddQuestionType(), $question,
array(
'action' => $this->generateUrl('edit_form')
));