ed2*_*209 7 php ajax symfony doctrine-orm
我的验证看起来像
Acme\UserBundle\Entity\User:
constraints:
- \Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: { fields:username, message: "Username already in use" }
- \Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: { fields:email, message: "Email address already in use" }
properties:
username:
- NotBlank: ~
- MinLength: { limit: 2, message: "Your username must have at least {{ limit }} characters." }
email:
- Email:
message: The email "{{ value }}" is not a valid email.
checkMX: true
Run Code Online (Sandbox Code Playgroud)
我的控制器像:
$form = $this->createForm(new RegistrationType());
$form->bindRequest($request);
if ($form->isValid()) {
//... save to db
}else{
$errors = $form->getErrors();
//... pass the errors back as json
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试构建通过ajax请求提交的用户注册控制器.但是,当触发验证错误时,$error
变量如下所示:
[2011-11-07 19:19:44] app.INFO: array (
0 =>
Symfony\Component\Form\FormError::__set_state(array(
'messageTemplate' => 'Email address already in use',
'messageParameters' =>
array (
),
)),
1 =>
Symfony\Component\Form\FormError::__set_state(array(
'messageTemplate' => 'Your username must have at least {{ limit }} characters.',
'messageParameters' =>
array (
'{{ value }}' => '1',
'{{ limit }}' => 2,
),
)),
) [] []
Run Code Online (Sandbox Code Playgroud)
问题是我不知道错误对应哪个字段.有没有办法找到这些数据,这样当我发送json响应时,我可以将错误消息与相关字段相关联.
我认为您可以单独查询每个字段,例如:
$form->get('username')->getErrors()
所以你可以这样建立一个数组:
$errors['username'] = $form->get('username')->getErrors();
$errors['email'] = $form->get('email')->getErrors();
Run Code Online (Sandbox Code Playgroud)
您可以自动执行以下操作:
$fields = $form->getChildren();
foreach ( $fields as $field ) {
$errors[$field->getName()] = $field->getErrors();
}
Run Code Online (Sandbox Code Playgroud)
我认为该getName
函数应该在自己的表单的子项上调用时返回字段名称.其他人可能有更有效的方式......
归档时间: |
|
查看次数: |
3264 次 |
最近记录: |