Модульные плагины контроллера в Zend Framework - PullRequest
4 голосов
/ 07 октября 2010

Мой проект Zend Framework разделен на определенные Модули.Каждый модуль имеет несколько специальных плагинов контроллера.

Теперь проблема в том, что все плагины загружаются и регистрируются (и, следовательно, вызываются) - независимо от того, к какому модулю пользователь пытается получить доступ.

Я мог бы проверить, в каком модуле мы находимся, и остановить выполнение непосредственно в плагинах, но я должен был бы сделать это в каждом плагине ...

Есть ли элегантный способ зарегистрировать только специфичные для модуля плагины?Или я пытаюсь решить не ту проблему здесь?

1 Ответ

6 голосов
/ 07 октября 2010

Это пример специфичных для модуля плагинов

Взято из http://weierophinney.net/matthew/archives/234-Module-Bootstraps-in-Zend-Framework-Dos-and-Donts.html

class Foomodule_Plugin_Layout extends Zend_Controller_Plugin_Abstract
{
    public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
    {
        if ('foomodule' != $request->getModuleName()) {
            // If not in this module, return early
            return;
        }

        // Change layout
        Zend_Layout::getMvcInstance()->setLayout('foomodule');
    }
}

UPDATE: в случае, если вы пропустили, есть другие способы, перечисленные в той же статье выше:

Нет лучшего способа сделать это?

Да, вероятно, есть лучшие способы сделать это. Истинная проблема заключается в том, что в настоящее время модули действительно граждане второго сорта в ZF. Есть несколько интересных идей, плавающих вокруг: Конфигурация активного модуля Кэтрин

Модуль конфигурации Jeroen

Модуль конфигурации Matthijs

Предложение Конфигураторов модулей Падрейка и Роба

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...