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最终版本中完成这项工作?
答案 0 :(得分: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);
}
答案 1 :(得分:0)
在Beta系列的zend framework2
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以及控制器文件中的命名空间和路径。
答案 2 :(得分:0)
有两种方法,
您可以从Module.php init方法获取它,方法是将ModuleManger对象传递给它,然后再传递给modulemanager-> getEventManager。
或者从Module.php中再次使用onBootstrap方法,但不是来自ModuleManager,而是来自Abdul所做的应用程序对象。
请记住,init和onBoostrap方法针对每个页面请求运行。注册活动没关系,但不要把重物放在那里。我更喜欢sharedEventManager,因为它可用,即使服务将来初始化。
干杯!