Php $moduleManager->;getEventManager()->;getSharedManager()->;附件在稳定的zf2中不工作 namespace-Auth; 使用Zend\ModuleManager\ModuleManager; 类模块 { 公共函数初始化(ModuleManager$ModuleManager) { $sharedEvents=$moduleManager->getEventManager()->getSharedManager(); $sharedEvents->attach(_名称空间_,'dispatch',函数($e){ 回显“我是初始模块调度”; 退出(); }, 100); } }

Php $moduleManager->;getEventManager()->;getSharedManager()->;附件在稳定的zf2中不工作 namespace-Auth; 使用Zend\ModuleManager\ModuleManager; 类模块 { 公共函数初始化(ModuleManager$ModuleManager) { $sharedEvents=$moduleManager->getEventManager()->getSharedManager(); $sharedEvents->attach(_名称空间_,'dispatch',函数($e){ 回显“我是初始模块调度”; 退出(); }, 100); } },php,zend-framework2,Php,Zend Framework2,$moduleManager->getEventManager()->getSharedManager()->attach()在ZF2 BETA5中运行良好,但在稳定的最终版本中不起作用 此功能在最终版本中是否已启用? 如何在ZF2最终版本中实现这一点?在zend framework2的Beta系列中 Auth\src\User\Controller\UserController.php 但在zf2的最终版本中,这不起作用。主命名空间文件夹应与src文件夹下的完全相同。所以上面的工作方式只能是

$moduleManager->getEventManager()->getSharedManager()->attach()
在ZF2 BETA5中运行良好,但在稳定的最终版本中不起作用

此功能在最终版本中是否已启用?

如何在ZF2最终版本中实现这一点?

在zend framework2的Beta系列中

Auth\src\User\Controller\UserController.php
但在zf2的最终版本中,这不起作用。主命名空间文件夹应与src文件夹下的完全相同。所以上面的工作方式只能是这样

Auth\src\Auth\Controller\UserController.php
or
User\src\User\Controller\UserController.php
不要忘记更改module.php和module.config.php以及控制器文件中的名称空间和路径

有两种方法

public function onBootstrap(MvcEvent $e)
{
    $application   = $e->getApplication();
    $sharedManager = $application->getEventManager()->getSharedManager();

    $sharedEvents->attach(__NAMESPACE__, 'dispatch', function($e) {
           echo "I am init module dispatch";
           exit();
    }, 100);
}
您可以从Module.php init方法获得它,方法是将modulemanager对象传递给modulemanager,然后传递modulemanager->getEventManager

或者再次从Module.php中的onBootstrap方法,但不是从ModuleManager,而是像Abdul那样通过应用程序对象

记住,init和onBoostrap方法对每个页面请求都运行。在那里注册活动是可以的,但不要在那里放置重物。我更喜欢sharedEventManager,因为即使将来初始化该服务,它也是可用的


干杯

什么不起作用?有错误信息吗?(我从RC1开始)顺便说一句,在这里工作。正在加载模块吗?没有错误消息。是的,我正在加载模块,并且Auth名称空间下的登录页面工作正常。如果我将zf2最终版本的目录切换到zf2 beta5,则即使init()也可以正常执行。它开始工作了。为什么不在zf2最终版本中工作?好的,是否有另一个对此事件具有更高优先级的事件处理程序来停止传播?我不知道为什么2.0.0版本不适用于您的。我已经用一个新从git中提取的ZF2测试了它,它可以正常工作。sharedManager应该是sharedEvents