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


Symfony2 form errors not showing, UniqueEntity error message not shown next to the corresponding field

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

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) }}

如果用户名已经在使用,我会得到错误。这是的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

我在for builder中的所有输入上也有'error_bubbling' => true

我也试过$errors = $this->get('validator')->validate( $registration->getUser() );然后通过'errors' => $errors查看,但在相应的输入处没有显示消息。

我这样做不对吗?

更新

当我放置{{ form_errors(form) }}时,会显示错误消息。

您打开了error_bubbling,因此来自子窗体的所有错误消息都会冒泡到根窗体。

如果要具体显示每个字段的表单错误,请将其设置为false

综上所述:

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

{{ form_errors(form) }}

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

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