我正在使用Symfony 2 .
我的表单工作方式如下:
-
表单以Ajax(JQuery)提交
-
如果表单中有错误,我会收到包含所有错误消息的XML响应
<errors>
<error id="name">This field cannot be blank</error>
<error id="email">This email address is not valid</error>
<error id="birthday">Birthday cannot be in the future</error>
</errors>
- 如果表单中没有错误,我会收到带有重定向URL的XML响应
<redirect url="/confirm"></redirect>
- My question is :如何更改"forever" Symfony 2中表单的行为,以便我可以使用如下控制器:
public function registerAction(Request $request)
{
$member = new Member();
$form = $this->createFormBuilder($member)
->add('name', 'text')
->add('email', 'email')
->add('birthday', 'date')
->getForm();
if($request->getMethod() == 'POST') {
$form->bindRequest($request);
if($form->isValid()) {
// returns XML response with redirect URL
}
else {
// returns XML response with error messages
}
}
// returns HTML form
}
谢谢你的帮助,
问候,
2 回答
表单处理程序也是我如何做到的 . 验证formHandler中的表单,并根据formHandler的响应在控制器中创建json或xml响应 .
这只会返回每个字段1个错误消息,但它对我有用 .
考虑将此逻辑封装在“表单处理程序”服务中,类似于FOSUserBundle中的操作:
https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Form/Handler/RegistrationFormHandler.php