我想单独表单验证逻辑:Symfony的2 - 独立的形式逻辑,表演形式错误后重定向
public function contactAction()
{
$form = $this->createForm(new ContactType());
$request = $this->get('request');
if ($request->isMethod('POST')) {
$form->submit($request);
if ($form->isValid()) {
$mailer = $this->get('mailer');
// .. setup a message and send it
return $this->redirect($this->generateUrl('_demo'));
}
}
return array('form' => $form->createView());
}
我想转换成2个独立的动作:
public function contactAction()
{
$form = $this->createForm(new ContactType());
return array('form' => $form->createView());
}
public function contactSendAction()
{
$form = $this->createForm(new ContactType());
$request = $this->get('request');
if ($request->isMethod('POST')) {
$form->submit($request);
if ($form->isValid()) {
$mailer = $this->get('mailer');
// .. setup a message and send it using
return $this->redirect($this->generateUrl('_demo'));
}
}
// errors found - go back
return $this->redirect($this->generateUrl('contact'));
}
的问题是,当表单中存在错误时 - 在表单验证和重定向之后,不会在contactAction中显示。 (可能它们在重定向后已经被遗忘 - 错误上下文将会丢失)
感谢您提供有关方法要求的信息,并使用返回视图而不是重定向。但是,如果我将使用视图,它将与它一样 - 2逻辑不再分开。有什么办法可以使用重定向,不要松散的表单错误? – pleerock
重定向而不是丢失表单数据似乎不是正确的想法。您可以在会话中设置错误并将它们添加到表单中,但这样做存在潜在的缺陷。你想通过逻辑分离来摆脱什么?如果你愿意,你可能'返回$ this-> contactAction();' – Luke
对不起,我最后一条评论关于return $ this-> contactAction();是我吐口水,并没有很好的考虑 – Luke