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

zendframework2のベータシリーズ

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

2つの方法があります。

ModuleManger オブジェクトをそれに渡してから modulemanager->getEventManager を渡すことにより、Module.php の init メソッドから取得できます。

または、ModuleManager からではなく、Abdul が行ったようにアプリケーション オブジェクトによって、Module.php の onBootstrap メソッドから再び。

init メソッドと onBoostrap メソッドは、すべてのページ リクエストに対して実行されることに注意してください。イベントを登録しても問題ありませんが、重いものは置かないでください。将来サービスが初期化された場合でも使用できるため、sharedEventManager を好みます。

乾杯!

于 2013-10-27T15:09:28.143 に答える