具体的には、Module.phpファイル内にFlashMessengerプラグインフォームを使用しようとしています。Zend Framework 2では、コントローラーの外でコントローラープラグインを使用する方法
は今の私のApplication/Module.php
ファイル内のメソッドは次のようになりますので、$ E-> getController()
public function checkAcl(MvcEvent $e) {
// code to determine route and role ...
if (!$e->getViewModel()->acl->isAllowed($userRole, $route)) {
$flashMessenger = $e->getController()->plugin('flashMessenger');
$flashMessenger->addMessage('You must be logged in');
// code to redirect to login page ...
}
}
しかし、それは動作していない文字列ではなく、コントローラオブジェクトを返しています。コントローラまたはプラグインに直接アクセスするヘルプは高く評価されます。
hasMessages()またはgetMessages()を呼び出すと、FlashMessengerはすべてのメッセージをセッションからローカルのFlashMessengerオブジェクトにプルします(FlashMessenger.phpのgetMessagesFromContainer関数を参照)。 新しいFlashMessengerをインスタンス化し、その間にアプリケーションの何かがService Managerのインスタンス上でhasMessagesまたはgetMessagesを呼び出した場合、新しく作成されたインスタンスは空になります。上記のコードで最初に起きた場合、将来のインスタンスは空になります(最初のインスタンスがメッセージを取得します)。 –
チップありがとう@マークT – Conti