Symfony 显示来自验证方法的表单错误
Symfony display form errors from validation method
因为我习惯了 Laravel 我尝试在单独的方法中验证表单。但我不知道如何重定向并显示错误。主要问题是显示错误。最好的情况是,如果我可以设置验证方法的错误并让 Symfony 中的默认表单错误呈现接管。
我的方法可能完全错误,如果是的话,我希望有人能指导我正确的方向。
我创建了一个方法来创建表单并在 twig 中呈现它
/**
* @Route("/form")
* @Template("Bundle::form.html.twig")
* @Method("GET")
*/
public function formAction(Request $request)
{
$state = new State();
$form = $this->createFormBuilder($state)
->add('name', TextType::class)
->add('save', SubmitType::class, array('label' => 'Submit'))
->getForm();
return [
'form' => $form->createView(),
];
}
还有另一种验证表单并在出错时重定向的方法
/**
* @Route("/form")
* @Method("POST")
*/
public function formAction(Request $request)
{
$state = new State();
$form = $this->createFormBuilder($state)
->add('name', TextType::class)
->add('save', SubmitType::class, array('label' => 'Submit'))
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted()) {
if (!$form->isValid()) {
// How to pass errors?
return $this->redirectTo('/form');
}
// ... Store State
}
// ...
}
1) 检查 this
2) 如果你真的想从你的控制器中添加一个错误:
use Symfony\Component\Form\FormError;
// ...
$form->get('name')->addError(new FormError('Wrong name you fool :p'));
因为我习惯了 Laravel 我尝试在单独的方法中验证表单。但我不知道如何重定向并显示错误。主要问题是显示错误。最好的情况是,如果我可以设置验证方法的错误并让 Symfony 中的默认表单错误呈现接管。
我的方法可能完全错误,如果是的话,我希望有人能指导我正确的方向。
我创建了一个方法来创建表单并在 twig 中呈现它
/**
* @Route("/form")
* @Template("Bundle::form.html.twig")
* @Method("GET")
*/
public function formAction(Request $request)
{
$state = new State();
$form = $this->createFormBuilder($state)
->add('name', TextType::class)
->add('save', SubmitType::class, array('label' => 'Submit'))
->getForm();
return [
'form' => $form->createView(),
];
}
还有另一种验证表单并在出错时重定向的方法
/**
* @Route("/form")
* @Method("POST")
*/
public function formAction(Request $request)
{
$state = new State();
$form = $this->createFormBuilder($state)
->add('name', TextType::class)
->add('save', SubmitType::class, array('label' => 'Submit'))
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted()) {
if (!$form->isValid()) {
// How to pass errors?
return $this->redirectTo('/form');
}
// ... Store State
}
// ...
}
1) 检查 this
2) 如果你真的想从你的控制器中添加一个错误:
use Symfony\Component\Form\FormError;
// ...
$form->get('name')->addError(new FormError('Wrong name you fool :p'));