Pull to refresh

конфигурация модуля

Reading time 2 min
Views 851
Дано: ZF1.9.1;
2 модуля — default и admin: default лежит в /application, admin — в /application/modules/admin
есть единый конфиг — /application/config/application.ini
Если добавить в него строку (?)
admin.resources.layout.layout = admin
то модуль admin продолжает подгружать layout по умолчанию, если же добавить другую строчку:
resources.layout.layout = admin
то layout меняется, но для всего сайта.

Если создать Admin_Bootstrap — то в первом случае layout меняется для всего сайта.

Внимание вопрос: как корректно добавлять модуль-ориентированные настройки?

UPD: под катом решение для подгрузки плагинов (в виде простенького плагина)

В application.ini добавляем:
resources.modules[] =
создаём пустой бутстрап для модуля, создаём плагин:
<?php
class Plugin_ModuleLoader extends Zend_Controller_Plugin_Abstract
{
    /**
     *
     * @var array
     */
    protected $_options;

    /**
     *
     * @var Zend_Controller_Front
     */
    protected $_front;

    /**
     *
     * @param string $moduleName Имя модуля для инициализации плагинов
     */
    protected function _setupModulePlugins($moduleName)
    {
        if (!empty($this->_options[$moduleName])
                && !empty($this->_options[$moduleName]['plugins'])) {
            foreach ($this->_options[$moduleName]['plugins'] AS $plugin) {
                $this->_front->registerPlugin(new $plugin);
            }
        }
    }

    public function routeShutdown(Zend_Controller_Request_Abstract $request)
    {
        $this->_front = Zend_Controller_Front::getInstance();
        $options = $this->_front->getParams('bootstrap');
        $options = $options['bootstrap']->getOptions();
        if (!empty($options['moduleloader'])) {
            $this->_options = $options['moduleloader'];
            $this->_setupModulePlugins($request->getModuleName());
        }
    }
}


в application.ini:
moduleloader.default.plugins.plugin1 = Plugin_Plugin1
moduleloader.default.plugins.plugin2 = Plugin_Plugin2
moduleloader.admin.plugins.plugin1 = Admin_Plugin_Plugin1
moduleloader.admin.plugins.plugin2 = Admin_Plugin_Plugin2
Tags:
Hubs:
+2
Comments 6
Comments Comments 6

Articles