Как я могу отдать приоритет одному помощнику в Zend Framework?

У меня есть следующий код:

    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 ответ

Пути к плагину, добавленные в использование Helper Broker Zend_Loader_PluginLoader который использует стек LIFO для путей, то есть последний добавленный путь является первым проверенным. Учитывая ваш код, так как вы добавляете application путь второй, он должен иметь приоритет над файлами в My/Controller (и то и другое addPrefix а также addPath вызвать тот же метод в Zend_Loader_PluginLoader так что они фактически одно и то же.

Разве это не то, что вы находите?

Другие вопросы по тегам