3

Zend Framework 2 と Doctrine 2 の上に基づいてアプリを開発しています。

2 日前、ドクトリンがエンティティ リスナーをバインドしてライフサイクル コールバックを管理できるようになったことを発見しました (prePersist、preUpdate、postLoad など)。

私は最初のモジュールで宣言されたエンティティを持っています(そしてアノテーション付きのDoctrine用に設定されています)。

別のモジュールで、エンティティにプログラムでバインドする EntityListener を作成しました。

最初のモジュールは2番目のモジュール(リスナーが宣言されている場所)から独立したままにする必要があるため、エンティティで注釈「@EntityListeners({"MyListenerClass"})」を使用することは絶対にできません

実際に、リスナーのモジュール bootstrap で次のようにしてバインドしようとしました。

$em = $e->getApplication()->getServiceManager()->get('Doctrine\ORM\EntityManager');
/* @var $em \Doctrine\ORM\EntityManager */
$entityListener = new EntityListener();
$entityListener->setServiceManager($e->getApplication()->getServiceManager());
$em->getConfiguration()->getEntityListenerResolver()->register($entityListener);

いくつかの出力ログで、この方法が機能しないことがわかりました (私のエンティティにエンティティ リスナーがあるとは一度も言いませんでした)。おそらく、このコードは不完全です

構成 (Annot、XML、または YAML) を使用せずにバインドする方法はありますか?

4

0 に答える 0