2013-05-18 4 views
0

Я пытаюсь вызвать вид помощника из подключаемого модуля (зарегистрированного в бутстрапе). С любого контроллера я могу получить доступ без каких-либо проблем, но не из плагина. Ниже мой код. Любая помощь приветствуется. спасибо. MiguelAccess action-helper внутри плагина переднего контроллера

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(); 
      } 
     } 
    } 
} 

Я получаю следующее сообщение об ошибке. Неустранимая ошибка: исключение «Zend_Loader_PluginLoader_Exception» с сообщением «Плагин по имени« FlashMessages »не найден в реестре; используемые пути: Zend_Controller_Action_Helper_: Zend/Controller/Action/Helper/'в /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

Затем вам необходимо зарегистрировать вспомогательные FlashMessages в бутстрапе приложения перед регистрацией Plugins_security. Чтобы он был доступен. – RKJ

+0

как вы регистрируете представление helper. Я могу использовать этот помощник во всем приложении, но не в классе плагинов. – user1960170

Смежные вопросы