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'))); ?>
- 索引.phtml:
App_View_Helper_Url
- 布局.phtml:
Zend_View_Helper_Url
我尝试通过将布局视图显式设置为正在引导的视图资源来解决此问题 - 这不起作用。
$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。