Session Zend框架特定模块会话配置

Session Zend框架特定模块会话配置,session,zend-framework,configuration,bootstrapping,Session,Zend Framework,Configuration,Bootstrapping,我正在尝试为2个模块获得不同的会话配置 在我的应用程序ini中,我设置了如下模块: resources.modules[] = resources.frontcontroller.moduleDirectory = APPLICATION_PATH "/modules" resources.frontcontroller.throwerrors = true resources.layout.layout = "layout" 会议的时间和地点

我正在尝试为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模块时,我仍然有默认配置

你知道什么是最好的方式来获得不同模块的不同会话吗


谢谢

我想建议您为ZF中的特定模块定制配置的另一种方法: 1.为每个模块配置文件创建:
/modules/$moduleName/configs/module.ini
2.向根引导添加下一个代码:

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()); 

}

我最终选择了控制器插件

用一些代码,比如

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堆栈中添加该插件


如果您有更好的解决方案,我很乐意。

谢谢,但是引导对象中没有方法getModuleName(),因此使用控制器插件是绝对好的。更多信息,谢谢阅读。如果Zend的人说插件是目前为止最好的方式,我想是的。