Zend Framework特定的模块会话配置

时间:2011-10-04 09:33:03

标签: session zend-framework configuration bootstrapping

我正在尝试为2个模块获取不同的会话配置。

在我的应用程序中,我有一个模块设置如下:

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

但是当我去后台模块时,我仍然有默认的配置

知道应该为不同模块获取不同会话的最佳方法是什么?

由于

2 个答案:

答案 0 :(得分:0)

我想建议您为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()); 

}

答案 1 :(得分:0)

我最终选择了一个控制器插件。

使用像

这样的代码
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堆栈中添加插件。

如果你有一个更好的解决方案,我会打开。