Zend framework 从另一个ViewHelper(特别是FlashMessenger)访问ViewHelper

Zend framework 从另一个ViewHelper(特别是FlashMessenger)访问ViewHelper,zend-framework,view-helpers,Zend Framework,View Helpers,因此,我创建了一个视图帮助器来专门化/简化Flash Messenger帮助器的一些功能 我一直在四处寻找,发现您应该能够通过以下代码访问FlashMessenger帮助程序: $this->view->_helper->flashMessenger->getMessages() 这对我不起作用。我可以访问视图,但不能访问_helper下的任何内容。我的助手类确实扩展了Zend_View_helper_Abstract。您必须从视图脚本显式地传递视图吗?Zend\u Controller\u操作

因此,我创建了一个视图帮助器来专门化/简化Flash Messenger帮助器的一些功能

我一直在四处寻找,发现您应该能够通过以下代码访问FlashMessenger帮助程序:

$this->view->_helper->flashMessenger->getMessages()


这对我不起作用。我可以访问视图,但不能访问_helper下的任何内容。我的助手类确实扩展了Zend_View_helper_Abstract。您必须从视图脚本显式地传递视图吗?

Zend\u Controller\u操作的
$\u helper
属性存储Zend\u Controller\u Action\u HelperBroker的实例,因此您可以获取HelperBroker的实例,然后从那里获取FlashMessenger对象,而不是将其从视图传递给您的助手

// inside your view helper
$messenger = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger');
现在,您可以从view helper中访问Flash Messenger。您可以在应用程序中的任何位置执行相同的操作,以获取对任何动作助手的引用

另外请注意,如果尚未创建帮助程序,则调用
getStaticHelper
将为您初始化它


有关详细信息,请参见。

Zend\u Controller\u操作的
$\u helper
属性存储Zend\u Controller\u Action\u HelperBroker的实例,因此您可以获取HelperBroker的实例,然后从中获取FlashMessenger对象,而不是将其从视图传递给您的助手

// inside your view helper
$messenger = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger');
现在,您可以从view helper中访问Flash Messenger。您可以在应用程序中的任何位置执行相同的操作,以获取对任何动作助手的引用

另外请注意,如果尚未创建帮助程序,则调用
getStaticHelper
将为您初始化它


有关更多信息,请参阅。

太棒了,这是一个完美的答案。我很感激。太棒了,多么完美的答案。我很感激。