2
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 最终版本中进行这项工作?

4

3 回答 3

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);
}
于 2012-09-24T04:22:02.533 回答
0

在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 以及控制器文件中更改命名空间和路径。

于 2012-09-13T18:28:02.453 回答
0

有两种方式,

您可以从 Module.php 的 init 方法中获取它,方法是将 ModuleManger 对象传递给它,然后传递 modulemanager->getEventManager。

或者再次来自 Module.php 中的 onBootstrap 方法,但不是来自 ModuleManager,而是来自应用程序对象,就像 Abdul 所做的那样。

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

干杯!

于 2013-10-27T15:09:28.143 回答