2014-10-30 2 views
1

Я пишу пользовательский класс Helper, расширяя Zend_Controller_Action_Helper_Abstract. Внутри этого класса Helper я хочу использовать FlashMessenger для отображения сообщений, когда это необходимо. Я хочу различать предупреждения, успехи и сообщения об ошибках (нет, я не расист).Аргументы для помощника FlashMessenger в помощнике действий

В классе, который распространяется Zend_Controller_Action Я делаю что-то вроде этого, см. Ниже.

$this->_helper->FlashMessenger(array('error' => 'An error occured')); 

При написании класса Helper, который расширяет Zend_Controller_Action_Helper_Abstract вы можете получить имяПомощник с помощью getActionController() и getHelper методы вместе. Смотри ниже.

$this->getActionController()->getHelper('FlashMessenger'); 

Я хочу, чтобы добавить array('error' => 'An error occured') в качестве аргумента помощника FlashMessenger внутри mehod getHelper. Мне было интересно, можно ли добавить аргументы в FlashMessenger Helper через getHelper? Если нет, то как вы можете обойти это?

ответ

1

Это link обеспечивает решение:

Так что, если кто-то хочет установить флэш-сообщения от внешних контроллеров инициативных , то вы должны использовать что-то вроде этого, используя класс Zend_Controller_Action_HelperBroker и его статический помощник getStaticHelper ,

$flashmessenger = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger'); 
$flashmessenger->addMessage(array('error' => 'An error occured')); 

getHelper('FlashMessenger') Поскольку возвращает экземпляр Zend_Controller_Action_Helper_FlashMessenger, вы должны быть в состоянии сделать:

$this->getActionController()->getHelper('FlashMessenger')->addMessage(array('error' => 'An error occured')); 
+1

+1 За хороший ответ, я не знал, что addMessage() также принимает данные массива , потому что комментарии в библиотеке Zend говорят @param string $ message. – Julian