Zend_View_Helper的覆盖未在Zend_Layout中被拾取

时间:2015-02-03 08:17:50

标签: php zend-framework zend-view zend-layout

TL; DR:在ZF1中,在application.ini中注册自定义前缀后,尽管在常规视图中正常工作,但Zend_View_Helper_ *命名空间优先于我自己的命名空间。

  • 创建了Zend_View_Helper_Url的覆盖,名为App_View_Helper_Url
  • 将文件放在APPPLICATION_PATH/library/App/View/Helper/Url.php
  • 通过application.ini注册命名空间:resources.view.helperPath.App_View_Helper = APPLICATION_PATH "/library/App/View/Helper"

这很有效。在我的视图中,现在正在调用自定义URL帮助程序。但是,在模板视图中,额外的命名空间似乎没有成功。我通过运行此代码段验证了这一点:<?php var_dump(get_class($this->getHelper('url'))); ?>

  • index.phtml:App_View_Helper_Url
  • layout.phtml:Zend_View_Helper_Url

我已尝试通过将布局视图显式设置为正在引导的View资源来解决此问题 - 这不起作用。

$this->getResource('layout')->setView($this->getResource('view'));

最后,我通过在Bootstrap中修复以下内容来修复它:

$view = $layout->getView();
$view->addHelperPath(APPLICATION_PATH . '/library/App/View/Helper', 'App_View_Helper');

这个解决方案不是很令人满意,因为我现在两次定义相同的辅助路径,导致潜在的破坏线。因此,虽然我有一个解决方法,但我更喜欢理解如何/在哪里正确配置Zend_Layout使用的Zend_View实例,最好是通过application.ini。

0 个答案:

没有答案