1

我有以下代码:

    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;
}

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

4

1 回答 1

1

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

这不是你要找的吗?

于 2012-04-26T01:52:51.183 回答