[英]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.