当我尝试通过电子邮件注册一个应该是唯一的新用户时,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约束的验证,而我不能"调试"原因。
答案 0 :(得分:1)
如果您正在运行symfony 2.5.0
- 2.5.2
,那么这是与新验证API相关的错误。 2.5.3
如果升级不是一个选项,您可以通过强制config.yml
validation:
enable_annotations: true
api: 2.4 # default is auto which sets API 2.5 BC