xác nhận của tôi trông giống nhưTôi đang mất sự kết hợp của một lỗi để một trường mẫu trong Symfony2
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
điều khiển của tôi như:
$form = $this->createForm(new RegistrationType());
$form->bindRequest($request);
if ($form->isValid()) {
//... save to db
}else{
$errors = $form->getErrors();
//... pass the errors back as json
}
Tôi đang cố gắng để xây dựng một bộ điều khiển người dùng đăng ký được gửi qua yêu cầu ajax. Tuy nhiên, khi các lỗi xác thực được kích hoạt, biến số $error
trông giống như:
[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,
),
)),
) [] []
Vấn đề là tôi không biết trường nào lỗi tương ứng. Có cách nào để tìm dữ liệu đó để khi tôi gửi phản hồi json, tôi có thể liên kết thông báo lỗi với trường có liên quan.
Sử dụng '' '$ form-> getErrors()' '' trả về lỗi, tuy nhiên '' '$ form-> get ('username') -> getErrors()' '' trả về không có lỗi mặc dù cùng một dữ liệu được gửi. Nó giống như các lỗi được liên kết với biểu mẫu nói chung, thay vì với mỗi trường. – ed209
Bạn đã bật error_bubbling ở bất kỳ đâu? – Kasheen
Có, ví dụ '' '$ builder-> add ('username', 'text', array ('error_bubbling' => true));' '' – ed209