2013-01-31 3 views
3

Doctrine 엔티티 관리자를 내 ZF2 프로젝트의 여러 클래스에 넣으 려합니다. 그러므로. 때문에, 내가 그 컨트롤러의 사이트를 방문 (그리고 널 포인터 예외가 발생하고있다하더라도이니셜 라이저 클로저에서 컨트롤러가 호출되지 않음

그러나
'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에 호출되지 없구요 : 나는 내 Module.php초기화을 다음과 같은 설정을 가지고 엔티티 관리자가 설정되지 않았습니다). 내 AuthController가 초기화 폐쇄에 대해 검사되도록 구성해야 다른 아무것도

class AuthController extends AbstractActionController implements EntityManagerAwareInterface 

있습니까 : 물론, 컨트롤러는 필요한 인터페이스를 구현합니까?

현재 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... 
     ), 
    ); 
} 
입니다.