将Zend View Helper添加到应用程序中的所有视图(在引导程序中)

时间:2010-08-19 21:44:33

标签: zend-framework zend-view view-helpers

我正在使用Zend Framework 1.6,因此我没有使用Zend_Application。

我有一个简单,正常的View Helper(扩展Zend_View_Helper_Abstract)。只要我将它添加到动作控制器中的视图中,它就能完美地工作。但我希望能够在每个模块中的每个视图中使用它。我认为在我的bootstrap文件中获取全局视图应该很容易并且执行此操作:

$view->addHelperPath(PATH_VIEW_HELPERS, 'RT_View_Helper_');

但我似乎无法在我的bootstrap文件中获取$ view对象。我也试过

$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
if (null === $viewRenderer->view) {
    $viewRenderer->initView();
}
$view = $viewRenderer->view; 
$view = new Zend_View(array('encoding'=>'UTF-8'));
$view->addHelperPath(PATH_VIEW_HELPERS, 'RT_View_Helper_');

但这也无法解决问题。我已经尝试将它放在我的boostrap(这是一个前端控制器插件)的preDispatch()和postDispatch()中。

有没有人对如何做到这一点有任何想法?它似乎应该如此简单,但我在两天内无法找到解决方案。

全部谢谢:) 阿里

3 个答案:

答案 0 :(得分:4)

如果您使用的是Zend_Layout,那么这些内容可以为您提供Zend_View

$layout = Zend_Layout::getMvcInstance();
$view = $layout->getView();
// set helpers, doctype, etc...

答案 1 :(得分:0)

我不确定您的问题,但在我看来,您可以在Zend_Registry中注册视图对象

Zend_Registry::set('view', new Your_view);

答案 2 :(得分:0)

您可以在“setup.php / bootstrap.php或任何文件”中执行以下操作

$view = new Zend_View();
// add Helper Path 
$view->setHelperPath('/path/to/more/helpers', 'My_View_Helper');