Дано: ZF1.9.1;
2 модуля — default и admin: default лежит в /application, admin — в /application/modules/admin
есть единый конфиг — /application/config/application.ini
Если добавить в него строку (?)
то модуль admin продолжает подгружать layout по умолчанию, если же добавить другую строчку:
то layout меняется, но для всего сайта.
Если создать Admin_Bootstrap — то в первом случае layout меняется для всего сайта.
Внимание вопрос: как корректно добавлять модуль-ориентированные настройки?
UPD: под катом решение для подгрузки плагинов (в виде простенького плагина)
В application.ini добавляем:
создаём пустой бутстрап для модуля, создаём плагин:
в application.ini:
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