Какой каталог используется для плагинов Зенда?

Скажем, у меня есть следующее в моем ini файле:

resources.frontController.plugins.auth = AuthPlugin

Куда класс AuthPlugin должен быть помещен? Скажем, я хотел бы его под контроллерами/плагинами.

ОБНОВЛЕНИЕ:

На основе предложений ниже я все еще испытываю затруднения. Позвольте мне быть точным в том, что я в настоящее время имею:

1) основная часть application.ini

includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
resources.view[] =
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.plugins.authplugin.class = "AuthPlugin"

2) мой Bootstrap.php ничего не имеет (у меня было много вещей там, но все еще получите ошибку ни с чем):

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
}

3) У меня есть класс AuthPlugin.php в каталоге приложения/плагинов

class AuthPlugin extends Zend_Controller_Plugin_Abstract
{
    public function preDispatch(Zend_Controller_Request_Abstract $request)
        { 
           // code here
        }
}

Я получаю следующую ошибку:

Fatal error: Class 'AuthPlugin' not found in C:\[my dir structure here]\Application\Resource\Frontcontroller.php on line 111

Я предполагаю, что пропускаю что-то очевидное здесь.Заранее спасибо. Платформа зенда 1.10

6
задан Arthur Frankel 29 June 2010 в 19:39
поделиться

3 ответа

Вот как я регистрирую плагин с именем Foo_Plugin_SuperDuperPlugin в конфигурации моего приложения:

resources.frontController.plugins.superduperplugin.class = "Foo_Plugin_SuperDuperPlugin"

Плагин расположен по адресу
APPLICATION_PATH/plugins/Foo_Plugin_SuperDuperPlugin.php и автозагружается оттуда, потому что Resource Module Autoloader автоматически ищет ресурсы типа плагина в этом (рекомендуемом) месте. Если бы я хотел загрузить плагин, скажем, из
APPLICATION_PATH/controllers/plugins/Foo_Plugin_SuperDuperPlugin.php, то я бы зарегистрировал новый загрузчик ресурсов в автозагрузчике и определил тип ресурса 'plugin' и путь к этим ресурсам плагина. Так в моем bootstrap.php

protected function _initAutoloader()
{
    $autoloader = new Zend_Loader_Autoloader_Resource(
        array(
            'basePath'      => APPLICATION_PATH,
            'namespace'     => 'Foo',
            'resourceTypes' => array(
                'plugin' => array(
                    'path'      => 'controllers/plugins',
                    'namespace' => 'Plugin',
                )
            )
        )
    );
}

и затем мне нужно убедиться, что этот метод загружается до регистрации SuperDuperPlugin (что, в данном примере, происходит при чтении конфига приложения resources.frontcontroller.plugins.superduperplugin.class = .... ). Этого можно добиться, поместив метод _initAutoloader в начало bootstrap.php или вызвав $this->bootstrap('autoLoader'); из любого другого метода _init, до инициализации ресурса frontController.

ОБНОВЛЕНО: Попробуйте добавить это в свой bootstrap:

protected function _initAutoloader()
{
    $autoloader = new Zend_Loader_Autoloader_Resource(
        array(
            'basePath'      => APPLICATION_PATH,
            'resourceTypes' => array(
                'plugin' => array(
                    'path'      => 'controllers/plugins',
                    'namespace' => '',
                )
            )
        )
    );
}

и, возможно, даже оставьте пространство имен. Или: добавьте appnamespace = "Foo" в ваш конфиг и переименуйте класс в Foo_Plugin_AuthPlugin.

3
ответ дан 17 December 2019 в 07:00
поделиться

Я думаю, в / application / plugins /

Но вы также можете установить для него другой каталог.

0
ответ дан 17 December 2019 в 07:00
поделиться

Поскольку приложение будет загружаться из файла конфигурации после регистрации автозагрузчика, вы должны поместить AuthPlugin.php (который должен содержать класс AuthPlugin) в путь включения.

0
ответ дан 17 December 2019 в 07:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: