$ moduleManager-> getEventManager() - > getS

2019-09-22 09:44发布

namespace Auth;

use Zend\ModuleManager\ModuleManager;

class Module
{
    public function init(ModuleManager $moduleManager)
    {
        $sharedEvents = $moduleManager->getEventManager()->getSharedManager();
        $sharedEvents->attach(__NAMESPACE__, 'dispatch', function($e) {
               echo "I am init module dispatch";
               exit();
        }, 100);
    }
}

$moduleManager->getEventManager()->getSharedManager()->attach()在ZF2 beta5的工作正常,但它不是在稳定的最终发布工作。

已经起飞在最终版本中此功能?
我怎样才能使ZF2最终版本这项工作?

Answer 1:

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);
}


Answer 2:

在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和控制文件。



Answer 3:

有两种方法,

您可以从Module.php init方法得到它,通过传递ModuleManger对象到它,然后modulemanager-> getEventManager。

或者从onBootstrap方法再次Module.php而不是从ModuleManager会,而是由申请对象阿卜杜勒一样。

请记住,init和onBoostrap方法运行的每个页面请求。 注册事件有没关系,但不要把沉重的东西在那里。 我喜欢sharedEventManager,因为它是可用即使服务是未来的初始化。

干杯!



文章来源: $moduleManager->getEventManager()->getSharedManager()->attach is not working in stable zf2