我在注册页面上显示表单错误时遇到问题。
public function createAction {
if ($request->isMethod("POST")) {
$form->bind($request);
if ($form->isValid()){
//do stuf
}
else{
return array("form"=>$form->createView(), "companies"=> urlencode(json_encode($data)));
}
}
现在我认为我有:
{{ form_row(form.user.username) }}
{{ form_errors(form.user.username) }}
如果用户名已被使用,我收到错误。 <{1}}
var_dump
此处未显示任何错误:var_dump($form->getErrors());
array(1) {
[0]=>
object(Symfony\Component\Form\FormError)#839 (4) {
["message":"Symfony\Component\Form\FormError":private]=>
string(26) "Username is already in use"
["messageTemplate":protected]=>
string(26) "Username is already in use"
["messageParameters":protected]=>
array(0) {
}
["messagePluralization":protected]=>
NULL
}
}
在我的用户实体中,我有:
{{ form_errors(form.user.username) }}
我对构建器的所有输入也有/**
* @ORM\Entity
* @ORM\Table(name="users")
* @UniqueEntity(
* fields={"username"},
* message="Your E-Mail adress has already been registered"
* )
*/
class User implements AdvancedUserInterface, \Serializable
。
我也试过'error_bubbling' => true
然后将$errors = $this->get('validator')->validate( $registration->getUser() );
传递给查看,但相应输入处不显示消息。
我这样做错了吗?
更新
当我显示'errors' => $errors
错误消息时。
答案 0 :(得分:1)
您启用了error_bubbling
,因此来自子表单的所有错误消息都会冒泡到根表单。
如果您想特别为每个字段显示表单错误,请将其设置为false
。
总结一下:
如果error_bubbling = true
则显示所有错误:
{{ form_errors(form) }}
如果error_bubbling = false
,则您分别为每个单独的表单显示错误:
{{ form_errors(form.user.username) }}