Moja walidacja wyglądaTracę włączenia błędu w polu formularza w 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
Mój kontroler jak:
$form = $this->createForm(new RegistrationType());
$form->bindRequest($request);
if ($form->isValid()) {
//... save to db
}else{
$errors = $form->getErrors();
//... pass the errors back as json
}
Próbuję zbudować kontroler rejestracji użytkownika który jest przesyłany za pośrednictwem żądania ajax. Jednak, gdy uruchamiane są błędy w walidacji, zmienna $error
wygląda następująco:
[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,
),
)),
) [] []
Problemem jest to, że nie mają pojęcia, które pole to błąd odpowiada. Czy istnieje sposób, aby znaleźć te dane, tak aby po wysłaniu odpowiedzi json mogę skojarzyć komunikat o błędzie z odpowiednim polem.
Korzystanie '' '$ form-> getErrors()' 'zwraca błędy, jednak '' 'form-> get ('nazwaużytkownika') -> getErrors()' '' nie zwraca błędów, mimo że te same dane są przesyłane. To tak, jakby błędy były związane z formularzem w ogóle, a nie z każdym polem. – ed209
Czy włączono usuwanie błędów w dowolnym miejscu? – Kasheen
Tak, na przykład '' '$ builder-> add ('nazwaużytkownika', 'tekst', tablica ('błąd_błótenie' => prawda));' '' – ed209