Помощники действий Zend Framework - PullRequest
1 голос
/ 28 февраля 2011

Я в значительной степени новичок в помощниках действий Zend Framework и пытаюсь использовать их безуспешно (я прочитал кучу постов о помощниках действий, включая http://devzone.zend.com/article/3350, и не нашел решения в течение 8 часов).Я использовал Zend Tool для настройки моего проекта, и имя помощника - Action_Helper_Common.Независимо от того, что я делаю, я получаю следующую ошибку "Неустранимая ошибка: класс 'Action_Helper_Common' не найден".В настоящее время у меня настроены такие вещи:

  • zf версия: 1.11.3
  • имя помощника: Action_Helper_Common
  • расположение помощников: / application / controllers / helpers/Common.php

В Bootstrap.php у меня есть следующая функция:

    protected function _initActionHelpers() {
    Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH . '/controllers/helpers', 'Action_Helper');
    Zend_Controller_Action_HelperBroker::addHelper(
        new Action_Helper_Common(null, $session)
    );
}

Я также попробовал это без успеха (это было определено в Bootstrap.php до _initActionHelpers):

protected function _initAutoloader() {
    $moduleLoader = new Zend_Application_Module_Autoloader(array(
        'namespace' => '', 
        'basePath'  => APPLICATION_PATH . '/controllers/helpers'));
    return $moduleLoader;
}

Так что же я не так делаю?!?!PLZ помогите, я в отчаянии и собираюсь сдаться:)

Ответы [ 3 ]

0 голосов
/ 28 февраля 2011

По какой-то причине следующая строка у меня тоже не сработала:

Zend_Controller_Action_HelperBroker::addHelper( new Action_Helper_Common() );

Я просто получаю сообщение об ошибке "Класс не найден" каждый раз, когда я явно создаю новый вспомогательный объект.

Вот что у меня работает:

Zend_Controller_Action_HelperBroker::getHelper('Common');

В этом случае новый Action_Helper_Common объект создается и регистрируется с Helper Broker.

Хотя не уверен, что это работает для вас, так как у вас есть параметризованный конструктор.

0 голосов
/ 01 марта 2011

Вы получили ошибку, потому что вы не настроили автозагрузчик для Action_Helper _ *

Ресурс автозагрузчика

Хелпер-брокер использует загрузчик плагинов для загрузки хелперов на основе указанных вами путей и префиксов. Вот почему :: getHelper () может найти вашего помощника

0 голосов
/ 28 февраля 2011

вам не нужно делать (удалите его)

Zend_Controller_Action_HelperBroker::addHelper(
        new Action_Helper_Common(null, $session)
    ); ,

так как вы уже сделали

Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH . '/controllers/helpers', 'Action_Helper');

когда ты будешь делать

$myhelper = $this->getHelper('Common');

в вашем контроллере zf будет искать в каталоге / controllers / helpers / имя класса Action_Helper_Common и создаст для вас экземпляр и вернет его.

...