从另一个ViewHelper访问ViewHelper,特别是FlashMessenger

时间:2012-02-06 19:10:32

标签: zend-framework view-helpers

所以我创建了一个视图助手来专门化/简化Flash Messenger助手的一些功能。

我一直在四处寻找,并且看到你应该能够通过以下代码访问FlashMessenger助手:

$这 - >视图 - > _helper-> flashMessenger->的getMessages();

这对我不起作用。我可以在_helper下访问视图但不能访问任何内容。我的助手类确实扩展了Zend_View_Helper_Abstract。您是否必须从视图脚本中明确传入视图?

1 个答案:

答案 0 :(得分:3)

Zend_Controller_Action的$_helper属性存储Zend_Controller_Action_HelperBroker的一个实例,因此您可以获取HelperBroker的实例,然后从那里获取FlashMessenger对象,而不是将它从视图传递给您的帮助器。

// inside your view helper
$messenger = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger');

现在,您可以在视图助手中访问Flash Messenger。您可以在应用程序的任何位置执行相同操作,以获取对任何Action Helpers的引用。

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

有关详细信息,请参阅Action Helpers - The Helper Broker