2013-05-18 33 views
0

我想從插件(在引導程序中註冊)調用助手視圖。從任何控制器我都能夠訪問,而不是從任何問題,但不從插件。以下是我的代碼。任何幫助表示讚賞。 謝謝。米格爾前端控制器插件中的訪問動作助手

class Plugins_security extends Zend_Controller_Plugin_Abstract 
{ 
    public function preDispatch (Zend_Controller_Request_Abstract $request) 
    { 
     $auth = Zend_Auth::getInstance(); 
     $moduleName = $request->getModuleName(); 
     if ($request->getModuleName() != "auth") 
     { 
      $auth = Zend_Auth::getInstance(); 
      if (! $auth->hasIdentity()) 
      { 
       $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper(
       'redirector'); 
       $flashMessenger = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessages'); 
       $flashMessenger->flashMessenger (array('message' => 'Sessao expirada', 'status' => 'error')); 
       $redirector->gotoUrl('/auth/login/')->redirectAndExit(); 
      } 
     } 
    } 
} 

我收到以下錯誤。 致命錯誤:在註冊表中未找到帶有消息'按名稱插件'FlashMessages'的未捕獲異常'Zend_Loader_PluginLoader_Exception';使用路徑:Zend_Controller_Action_Helper_:Zend/Controller/Action/Helper /'in /usr/local/zend/share/ZendFramework/library/Zend/Loader/PluginLoader.php:412堆棧跟蹤:#0/usr/local/zend/share /ZendFramework/library/Zend/Controller/Action/HelperBroker.php(366):

回答

1

你必須改變

Zend_Controller_Action_HelperBroker :: getStaticHelper( 'FlashMessages');

Zend_Controller_Action_HelperBroker :: getStaticHelper( 'FlashMessenger');

實施例:

$ flashMessenger = Zend_Controller_Action_HelperBroker :: getStaticHelper( 'FlashMessenger'); $ flashMessenger-> addMessage(array('error'=>'Session expired'));

希望這可以幫助你。未測試

+0

FlashMessenger不是我的助手的名稱,名稱是FlashMessages,在該類中我調用: Zend_Controller_Action_HelperBroker :: getStaticHelper('FlashMessenger'); – user1960170

+0

然後,您需要在Plugins_security註冊之前在應用程序引導程序中註冊您的幫助器FlashMessages。以便它可用。 – RKJ

+0

你如何註冊一個視圖助手。我能夠在整個應用程序中使用這個助手,但不能在插件類中使用。 – user1960170

相關問題