Конкретная конфигурация сеанса модуля Zend Framework - PullRequest
1 голос
/ 04 октября 2011

Я пытаюсь получить другую конфигурацию сеанса для 2 модулей.

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

resources.modules[] =
resources.frontcontroller.moduleDirectory = APPLICATION_PATH "/modules" 
resources.frontcontroller.throwerrors     = true 
resources.layout.layout                   = "layout"

и для сеансов

resources.session.save_path           = APPLICATION_PATH "/temp/session"
resources.session.use_cookies         = true
resources.session.use_only_cookies    = true
resources.session.gc_maxlifetime      = 3600
resources.session.remember_me_seconds = 3600
resources.session.name                = "sid"
resources.session.gc_probability      = 1


backoffice.resources.session.save_path           = APPLICATION_PATH "/temp/bo/session"
backoffice.resources.session.use_cookies         = true
backoffice.resources.session.use_only_cookies    = true
backoffice.resources.session.gc_maxlifetime      = 3600
backoffice.resources.session.remember_me_seconds = 3600
backoffice.resources.session.name                = "BOsid"
backoffice.resources.session.gc_probability      = 1

но когда я иду в модуль backoffice, у меня все еще есть конфигурация по умолчанию

Есть идеи, каким должен быть лучший способ получить разные сессии для разных модулей?

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 октября 2011

Я наконец выбрал плагин контроллера.

С некоторым кодом типа

class App_Controller_Plugin_Session extends Zend_Controller_Plugin_Abstract
{


public function routeShutdown(Zend_Controller_Request_Abstract $request)
{
$config = Zend_Registry::get('config')->toArray();


if( $this->getRequest()->getModuleName() == 'backoffice'   ) {
  $conf = $config['sessionBackoffice'];
} else {
  $conf = $config['sessionDefault'];
}


Zend_Session::setOptions($conf);
Zend_Session::start();

}
}

Плагин должен быть сначала добавлен в стек registerPlugin, если вы используете какой-то другой плагин, требующий сессий.

Если у вас есть лучшее решение, я открыт.

0 голосов
/ 04 октября 2011

Я хочу посоветовать вам другой способ настройки конфигурации для определенных модулей в ZF: 1. Создайте для каждого модуля конфигурационный файл: /modules/$moduleName/configs/module.ini 2. Добавьте в корневой Bootstrap следующий код:

protected function _initBootstrap()
{
    $_conf = new Zend_Config_Ini(APPLICATION_PATH . "/modules/" . $this->getModuleName() . "/configs/module.ini", APPLICATION_ENV);
    $this->_options = array_merge($this->_options, $_conf->toArray()); 

}
...