2013-01-31 69 views
3

我想在我的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是對初始封閉檢查?

目前我有它在invokablesmodule.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" 

回答

3

嘗試增加一個初始化的控制器經理也一樣,你的調試輸出來看,一個你貼似乎是服務管理。您以相同方式配置其他管理器,用於控制器管理器的方法是getControllerConfig

public function getControllerConfig() 
{ 
     return array(
      'initializers' => array(
       // controller initializers here... 
     ), 
    ); 
} 
相關問題