2010-08-27 6 views
0

У меня есть конфигурационный файл, как этотКак настроить отдельные макеты для каждого модуля?

[production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
includePaths.library = APPLICATION_PATH "/../library" 
bootstrap.path = APPLICATION_PATH "/Bootstrap.php" 
bootstrap.class = "Bootstrap" 
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.modules[] = 

[staging : production] 

[testing : production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 

[development : production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 

[database] 
resources.db.adapter    = PDO_MYSQL 
resources.db.params.dbname   = "ccgss" 
resources.db.params.username  = "root" 
resources.db.params.password  = "" 
resources.db.params.hostname  = "localhost" 
resources.db.isDefaultTableAdapter = true 

[layout] 
layoutPath = APPLICATION_PATH "/modules/default/layouts" 
contentKey = "content" 

Это работает для модуля по умолчанию, но у меня есть панель администратора и расположение совершенно иное. Как настроить макет для модуля администратора?

ответ

1

В application.ini:

resources.layout.layout = "layout" 
resources.layout.layoutPath = APPLICATION_PATH "/layouts" 
admin.resources.layout.layout = "admin" 
admin.resources.layout.layoutPath = APPLICATION_PATH "/modules/admin/layouts" 

Вы также можете создать контроллер плагин макет переключения динамически основанный на параметрах запроса.

Для получения дополнительной информации см: http://blog.astrumfutura.com/archives/415-Self-Contained-Reusable-Zend-Framework-Modules-With-Standardised-Configurators.html

1

В контроллере, вы можете установить расположение:

$layout = Zend_Layout::getMvcInstance(); 
    $layout->setLayout('admin'); 
    $layout->setLayoutPath(APPLICATION_PATH . '/modules/admin/layouts'); 

Возможно сделать это в preDispatch

+0

не способ, чтобы установить его в начальной загрузке модуля? –

+0

Это также должно работать в бутстрапе, предполагая, что вы уже загрузили ресурс макета, например. '$ This-> самозагрузки ('расположение')'. – takeshin