初始化器关闭时不会调用Controller

时间:2013-01-31 18:53:25

标签: zend-framework2

我想将学说实体经理放入我的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吗?

目前我在module.config.php invokables 下了。

'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"

1 个答案:

答案 0 :(得分:3)

尝试为控制器管理器添加初始化程序,根据调试输出判断,您发布的初始化程序似乎是服务管理器。您以相同的方式配置其他管理器,用于控制器管理器的方法是getControllerConfig

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