Zend Framework Widget Обучающий вопрос - PullRequest
2 голосов
/ 20 октября 2010

Я пытаюсь следовать этому уроку, но не могу заставить его работать:

http://weierophinney.net/matthew/archives/246-Using-Action-Helpers-To-Implement-Re-Usable-Widgets.html

Я сделал все, как описано, но не знаю, какэто доступно в моих контроллерах.Моя файловая система выглядит следующим образом:

- application
    - controllers
        - IndexController.php
    - modules
        - user
            - configs
                user.ini
            - controllers
            - forms
                Login.php
            - helpers
                HandleLogin.php
            - views
                - scripts
                    login.phmtl
                    profile.phtml
            Bootstrap.php
    - views

Как использовать помощник HandleLogin в моем IndexController?Я действительно понятия не имею, и я ищу попытки больше, чем один день, и я почти хочу выбросить мой компьютер из окна;).Так что любая помощь будет оценена!

Ответы [ 2 ]

2 голосов
/ 22 октября 2010

Похоже, плагин виджета нигде не вызывается.

Несколько вещей для проверки:

  1. У вас есть Bootstrap.php файл для модуля ?
  2. Есть ли в этом файле начальной загрузки метод _initWidgets()?
  3. Этот метод вызывает:

    $widget = new Module_Widget_Name; // is it callable?
    Zend_Controller_Action_HelperBroker::addHelper($widget);

  4. Вы зарегистрировали ресурс виджета?

    public function _initResourceLoader()
    {
    $loader = $this->getResourceLoader();
    $loader->addResourceType('helper', 'helpers', 'Helper');
    $loader->addResourceType('widget', 'widgets', 'Widget');

    return $loader;
    

    }

  5. Содержит ли application.ini строку resources.modules[] =?

0 голосов
/ 20 октября 2010

Вы не делаете. Цель этого учебника - создать многократно используемый виджет, который будет работать независимо от каких-либо конкретных контроллеров. Когда приложение получает запрос, оно запускается через цикл отправки и автоматически запускает помощник действий в preDispatch:

Теперь давайте посмотрим на самого помощника действий. Напомним, что помощники действий могут определять хуки для init () (вызываемого брокером-помощником каждый раз, когда он передается новому контроллеру), preDispatch () (вызывается до выполнения хука preDispatch () контроллера и выполнения самого действия) и postDispatch () (выполняется после действия и процедуры контроллера postDispatch ()).

Помощник извлечет текущий контроллер (в зависимости от того, что может быть для этого запроса), чтобы получить экземпляр View и сконфигурировать его в форме

...