如何在Zend Framework中优先考虑一个帮助程序?

时间:2012-04-26 01:13:31

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

我有以下代码:

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

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

1 个答案:

答案 0 :(得分:1)

添加到Helper Broker的插件路径使用Zend_Loader_PluginLoader,它使用LIFO堆栈作为路径,因此添加的最后一个路径是第一个检查的路径。根据您的代码,由于您要添加application路径,因此它应优先于My/Controller中的文件(addPrefixaddPath调用{{1}中的相同方法1}}所以它们实际上是一样的。

这不是你找到的吗?