Symfony2表单错误未显示,相应字段旁边未显示UniqueEntity错误消息

时间:2013-12-05 20:55:53

标签: php symfony

我在注册页面上显示表单错误时遇到问题。

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错误消息时。

1 个答案:

答案 0 :(得分:1)

您启用了error_bubbling,因此来自子表单的所有错误消息都会冒泡到根表单。

如果您想特别为每个字段显示表单错误,请将其设置为false

总结一下:

如果error_bubbling = true则显示所有错误:

{{ form_errors(form) }}

如果error_bubbling = false,则您分别为每个单独的表单显示错误:

{{ form_errors(form.user.username) }}