【问题标题】:How can I give priority to one helper in Zend Framework?如何在 Zend Framework 中优先考虑一个助手?
【发布时间】:2012-04-26 01:13:30
【问题描述】:

我有以下代码:

    public function _setHelpers() {
        Zend_Controller_Action_HelperBroker::addPrefix('My_Controller_Action_Helpers');
        Zend_Controller_Action_HelperBroker::addPath ( APPLICATION_PATH . '/controllers/helpers' );
    }

有了这个,我可以在 My/Controller/Action/Helpers/Helper.php 或 /application/controllers/helpers/Helper.php 中添加一个助手。没关系,但是我需要优先考虑 /application/ 中的那个,即:如果我有两个助手加载 /application 中的那个而不是 My/Controller/ 中的那个...

编辑

我可以通过将代码更改为此来解决此问题:

    public function _setHelpers() {
    $prefix = 'My_Controller_Action_Helpers';
    Zend_Controller_Action_HelperBroker::addPrefix ( $prefix );
    Zend_Controller_Action_HelperBroker::addPath ( APPLICATION_PATH . '/controllers/helpers', 'My_Controller_Action_Helper' );
    return $this;
}

您可能会注意到,它几乎相同,不同之处在于在添加路径时我还添加了前缀。感谢大家的帮助。

【问题讨论】:

    标签: php zend-framework action helpers zend-controller


    【解决方案1】:

    添加到 Helper Broker 的插件路径使用 Zend_Loader_PluginLoader,它使用 LIFO 堆栈作为路径,因此添加的最后一个路径是第一个检查的路径。鉴于您的代码,由于您第二次添加 application 路径,因此它应该优先于 My/Controller 中的文件(addPrefixaddPathZend_Loader_PluginLoader 中调用相同的方法,因此它们实际上是同一件事.

    这不是你发现的吗?

    【讨论】:

    • 其实没有,我有这两个代码:class My_Controller_Action_Helpers_Noticia extends My_Controller_Action_Helper_Abstract { protected function _direct() { echo 1; } } class My_Controller_Action_Helper_Noticia extends Busca_Controller_Action_Helpers_Noticia { protected function _direct() { echo 2; } } 第一个是 My/Controller/... 第二个在 Controllers/Helpers/ 它在视图中显示 1...
    • 在这种情况下,原因是其中一个类没有正确命名,所以它不会被加载。根据您的应用前缀,我认为您必须将Controllers/Helpers 中的一个更改为Busca_Controller_Action_Helper_Noticia,并确保该位置为application/controllers/action/helpers/Noticia.php
    • 问题是没关系,问题是其他的,但我已经弄清楚了。感谢您的帮助,您给了我修复它的线索(因为我打印了前缀被添加到 Zend_Controller_Action_HelperBroker::getPluginLoader ()->getPaths () 并且我看到需要添加前缀到 addPath)非常感谢!
    猜你喜欢
    • 2021-09-17
    • 1970-01-01
    • 2019-09-20
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 2018-11-25
    相关资源
    最近更新 更多