【问题标题】:Validate form in different controller action symfony在不同的控制器动作 symfony 中验证表单
【发布时间】:2015-10-14 07:53:09
【问题描述】:

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

这是一个返回表单的动作示例

 /**
     * @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));
            }
(...)

问题是第二个动作中的验证永远不会被调用。知道如何让这个工作正常吗?

【问题讨论】:

  • 您是否将表单操作设置为更正路线?
  • 这是什么意思?我该怎么做?

标签: php forms validation symfony


【解决方案1】:

如果你想在其他 url 上验证表单,你应该添加表单操作:

ajaxAddQuestionFormAction:

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

编辑动作路线:

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

【讨论】:

  • 在这方面帮了我很多忙!非常感谢。
猜你喜欢
  • 2020-03-25
  • 2017-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
  • 2014-11-30
  • 1970-01-01
相关资源
最近更新 更多