ZF2 プロジェクトのさまざまなクラスにドクトリン エンティティ マネージャを配置したいと考えています。したがって。に次のイニシャライザをセットアップしましたModule.php
。
'initializers' => array(
function ($instance, $services) {
if (is_object($instance)) { // just for debugging
var_dump(get_class($instance));
}
if (!$instance instanceof EntityManagerAwareInterface) {
return;
}
$entityManager = $services->get('doctrine.entitymanager.orm_default');
$instance->setEntityManager($entityManager);
},
),
)
それでも、AuthController
そのコントローラーのサイトにアクセスしているにもかかわらず、呼び出されることはありません(エンティティマネージャーが設定されていないため、ヌルポインター例外が発生します)。もちろん、コントローラーは必要なインターフェースを実装しています。
class AuthController extends AbstractActionController implements EntityManagerAwareInterface
AuthController
イニシャライザクロージャに対してチェックされるように設定する必要があるものは他にありますか?
現時点では、invokablesの下にありmodule.config.php
ます。
'controllers' => array(
'invokables' => array(
'Auth\Controller\Auth' => 'Auth\Controller\AuthController',
),
),
そこから削除すると、アプリケーションはクラスを見つけることができなくなります。
私のデバッグ出力には、初期化子、多くのマネージャー、およびサービスに対してチェックされる他のクラスがリストされています。小さな抜粋:
string(37) "Zend\\Mvc\\Controller\\ControllerManager"
string(33) "Zend\\Mvc\\Controller\\PluginManager"
string(29) "Zend\\View\\HelperPluginManager"
[...]
string(24) "Doctrine\\DBAL\\Connection"
string(26) "Doctrine\\ORM\\EntityManager"
string(41) "Zend\\Authentication\\AuthenticationService"