Validation 如果在Symfony2中无效,如何重定向到有错误的表单?

Validation 如果在Symfony2中无效,如何重定向到有错误的表单?,validation,symfony,Validation,Symfony,如果表单对Symfony2无效,我不知道如何将错误重定向到表单 因此,我在实体中使用断言,如下所示: /** * @ORM\Column(type="string", length=255, nullable=false) * @Assert\NotBlank() */ private $title; 这是我的createAction方法: public function createAction(Request $request) { $task = new Task();

如果表单对Symfony2无效,我不知道如何将错误重定向到表单

因此,我在实体中使用断言,如下所示:

/**
 * @ORM\Column(type="string", length=255, nullable=false)
 * @Assert\NotBlank()
 */
private $title;
这是我的createAction方法:

public function createAction(Request $request)
{
    $task = new Task();

    $form = $this->createForm(new TaskType(), $task);

    if ($request->getMethod() == 'POST') {
        $form->handleRequest($request);

        if ($form->isValid()) {
            $em = $this->getDoctrine()->getManager();
            $em->persist($task);
            $em->flush();
        }

        // What should I do here if the form is not valid

        $this->get('session')->getFlashBag()->add('success', 'The task has been added successfully!');

        return $this->redirect($this->generateUrl('crm_tasks'));
    }

    return $this->render('LanCrmBundle:Task:create.html.twig', array(
        'form' => $form->createView(),
    ));

}

如何将错误返回到表单?

您应该在if($form->isValid)条件中包含FlashBag()和return语句

 if ($form->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $em->persist($task);
        $em->flush();

        $this->get('session')->getFlashBag()->add('success', 'The task has been added successfully!');

        return $this->redirect($this->generateUrl('crm_tasks'));
 }

如果无效,用户将被重定向到表单,如果Symfony发现错误,则显示错误。

谢谢您的回答。