嗨:我使用的是最新版本的Zend Framework(1.9.3PL1).我在.ini中设置了以下内容
; Bootstrap session resources resources.session.save_path = APPLICATION_PATH "/../data/sessions" resources.session.use_only_cookies = true resources.session.remember_me_seconds = 864000
接下来我想在我的引导程序中初始化我的会话:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initSession() { // What goes here!? } }
我的问题是,initSession函数有什么用处?它应该返回什么,如果有的话?
此外,如果我只是在那里开始会话,它不会识别.ini配置(例如,save_path不变).但是,如果将开头移动到控制器,则会识别.ini配置.
编辑:一个可能的解决方案是:
protected function _initSession() { // Based on http://framework.zend.com/issues/browse/ZF-6651 $session = $this->getPluginResource('session'); $session->init(); Zend_Session::start(); }
Stefan Gehri.. 11
如果resources.session.*
在应用程序配置中使用-options,则必须_initSession()
在引导程序中没有方法,因为这些方法将覆盖插件资源session
(Zend_Application_Resource_Session
)的执行.resources.session.*
配置文件中-options 的唯一退出将确保会话将根据您的选项进行初始化.
请阅读Zend_Application,Operation of Operation,详细讨论所谓的资源方法和资源插件.
如果resources.session.*
在应用程序配置中使用-options,则必须_initSession()
在引导程序中没有方法,因为这些方法将覆盖插件资源session
(Zend_Application_Resource_Session
)的执行.resources.session.*
配置文件中-options 的唯一退出将确保会话将根据您的选项进行初始化.
请阅读Zend_Application,Operation of Operation,详细讨论所谓的资源方法和资源插件.
Stefan非常正确,您将覆盖使用这些应用程序选项的默认会话资源.
如果要定义自己的_initSession()方法并仍然访问这些选项,请使用以下内容:
protected function _initSession() { $options = $this->getOptions(); $sessionOptions = array( 'save_path' => $options['resources']['session']['save_path'] ); Zend_Session::setOptions($options); Zend_Session::start(); }