[英]Why isn't Symfony2 triggering my Doctrine event listener for `preUpdate`?
我试图将一个简单的Blowfish密码编码器添加到Symfony2。
当用新密码更新用户模型时,我需要在持久化模型之前触发密码进行编码。 我想在我的services.xml
使用preUpdate
Doctrine事件标记。
不幸的是它没有被触发。
奇怪的是,我还订阅了prePersist
事件,并且该事件已被正确触发。
我缺少某些区别还是某些原因导致此问题不起作用?
<service id="base.user.listener.persist" class="Base\UserBundle\Listener\PasswordEncoder">
<tag name="doctrine.event_listener" event="preUpdate" />
<tag name="doctrine.event_listener" event="prePersist" />
<argument type="service" id="security.encoder.blowfish" />
</service>
/**
* @param LifecycleEventArgs $args
*/
public function prePersist(LifecycleEventArgs $args) {
$entity = $args->getEntity();
$entity = $this->encodePassword($entity);
}
/**
* @param LifecycleEventArgs $args
*/
public function preUpdate(LifecycleEventArgs $args) {
die('preUpdate');
$entity = $args->getEntity();
$entity = $this->encodePassword($entity);
}
如果您需要查看更多代码,只需大声疾呼。
好的,因此services.xml
定义没有问题。 看来您必须使用以下方式在侦听类( PasswordEncoder.php
)中复制订阅信息:
public function getSubscribedEvents() {
return array(
Events::prePersist,
Events::preUpdate,
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.