シンプルな Blowfish パスワード エンコーダーを Symfony2 に追加しようとしています。
ユーザー モデルが新しいパスワードで更新された場合、モデルを永続化する前に、パスワードのエンコードをトリガーする必要があります。preUpdate
でDoctrine イベント タグを使用したいと考えていservices.xml
ます。
残念ながら、それはトリガーされていません。
奇妙なことに、私もprePersist
イベントを購読しており、それは正しくトリガーされています。
私が見逃している違いや、これが機能しない何らかの理由がありますか?
サービス.xml
<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>
PasswordEncoder.php (イベント サブスクライバー)
/**
* @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);
}
もっとコードを見る必要がある場合は、声を出してください。