在FOSUserBundle中的密码字段上放置了UniqueEntity验证错误

时间:2014-09-04 12:17:31

标签: symfony fosuserbundle

当我尝试通过电子邮件注册一个应该是唯一的新用户时,UniqueEntity约束正常工作,错误虽然位于密码字段而不是电子邮件字段,但任何人都知道原因吗?

用户类:

use FOS\UserBundle\Model\User as FOSUser;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
(...)
use Gedmo\Mapping\Annotation as Gedmo;

/**
 * User
 *
 * @ORM\Table()
 * @UniqueEntity("email")
 * (...)
 */
class User extends FOSUser

表格:

public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder
            ->add('email', 'email', array('label' => 'form.email'))
            ->add('firstName', null, array('label' => 'form.first_name'))
            ->add('lastName', null, array('label' => 'form.last_name'))
            ->add('plainPassword', 'repeated', array(
                'type' => 'password',
                'first_options' => array('label' => 'form.password'),
                'second_options' => array('label' => 'form.password_confirmation'),
                'invalid_message' => 'fos_user.password.mismatch'
            ))
    ;
}

表格渲染:

{{ form_widget(form) }}

错误,来自探查者:

**Origin:** first   (the password field)

Object(Symfony\Component\Form\Form).data.plainPassword.data.second = EMAIL@DOMAIN...

不仅密码字段传递给它看起来的整个用户对象,它还会导致UniqueEntity约束的验证,而我不能"调试"原因。

1 个答案:

答案 0 :(得分:1)

如果您正在运行symfony 2.5.0 - 2.5.2,那么这是与新验证API相关的错误。 2.5.3

中的fixed

如果升级不是一个选项,您可以通过强制config.yml

中的旧验证API来解决此问题
validation:
    enable_annotations: true
    api: 2.4 # default is auto which sets API 2.5 BC