根据问题和这个answer,我将事件preUpdate()
结合symfony和doctrine确实做了什么。Symfony2学说'preUpdate'事件编码密码
确切的说,我的意思是在上面的回答这一行:
$event->setNewValue('password', $user->getPassword());
为什么我需要手动设置的新值额外的步骤?
我认为该原则处理事件并自己更新实体,而无需调用例如flush
?
扶持抛出的异常
Field "password" is not a valid field of the entity "...\UserBundle\Entity\User" in PreUpdateEventArgs.
时,我用这个,我不明白为什么我需要手动修改的实体。
关于异常的扩展信息:它仅在用户登录时抛出,而不是在用户注册或编辑时抛出。
你真的有在'... \ UserBundle \实体\ User'实体'getPassword来()'和'setPassword()''方法财产password'? –
也许你使用这个字段的验证器?那个密码你设定的是无效的?检查这个,请 –
是@Victor我多次检查属性和方法。 ' ... /** * @ORM \柱(类型= “字符串”,长度= 255) */ 保护$密码; ... ' 也没有验证这一点。 – FunkeMT