我的驗證看起來像我失去了一個錯誤的聯想到窗體域的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
我喜歡控制器:
$form = $this->createForm(new RegistrationType());
$form->bindRequest($request);
if ($form->isValid()) {
//... save to db
}else{
$errors = $form->getErrors();
//... pass the errors back as json
}
我試圖建立一個用戶註冊控制器通過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,
),
)),
) [] []
的問題是我不知道哪場是錯誤對應。有什麼方法可以找到這些數據,以便當我發送json響應時,我可以將錯誤消息與相關字段相關聯。
使用'''$形式 - > getErrors()'''返回錯誤,但是'''$ form-> get('username') - > getErrors()'''即使提交了相同的數據也不會返回錯誤。就好像錯誤與一般形式相關聯,而不是與每個字段相關聯。 – ed209
你在任何地方啓用了error_bubbling嗎? – Kasheen
是的,例如$'builder-> add('username','text',array('error_bubbling'=> true));''' – ed209