你能告诉我如何在ZF2中正确使用会话吗?到目前为止,我有这个代码:
- "session" =>
- [
- "remember_me_seconds" => 2419200,"use_cookies" => true,"cookie_httponly" => true
- ]
这是我在stackoverflow上的一些帖子中复制的会话配置.现在我应该将此代码放入使用会话的每个模块中的module.config.PHP中还是应用程序模块中?
- public function onBootstrap(EventInterface $Event)
- {
- $Config = $Event->getApplication()->getServiceManager()->get('Configuration');
- $SessionConfig = new SessionConfig();
- $SessionConfig->setOptions($Config['session']);
- $SessionManager = new SessionManager($SessionConfig);
- $SessionManager->start();
- Container::setDefaultManager($SessionManager);
- }
与Module类的onBootstrap()方法相同的问题.这段代码应该进入每个模块的Module类,还是仅进入Application的Module类一次?
在这两种情况下,我都尝试了两种方法,我甚至尝试将这些代码同时放入两个模块中,但我唯一能够完成的是在控制器的构造函数中设置会话变量,然后在actions / methods中读取它们.我无法在一个操作/方法中设置会话变量,然后在另一个操作/方法中读取它.如果我删除我在控制器的构造函数中设置变量的行,我就不能再在会话中看到这些变量了.会话的行为就像每次请求页面时创建和删除的一样.
我错过了什么吗?请不要将我链接到互联网上的任何资源,我已经阅读了所有资源,但他们并没有真正的帮助.
您无需进行任何配置即可在Zend Framework 2中使用会话.当然,您可以更改设置,但如果您只想启动并运行会话,那么现在就不要担心.
我道歉,但我将无视你的最后一句话;大约一个月前,我写了一个article about this subject,目的是展示如何快速开始使用ZF2中的会话.它在搜索引擎中排名不佳,所以很有可能你没有读过它.
这是一个代码片段,展示了如何完成它.如果您对幕后的工作方式感兴趣,请参阅上面的链接.
- namespace MyApplication\Controller;
- use Zend\Mvc\Controller\AbstractActionController;
- use Zend\Session\Container; // We need this when using sessions
- class UserController extends AbstractActionController {
- public function loginAction() {
- // Store username in session
- $userSession = new Container('user');
- $userSession->username = 'Andy0708';
- return $this->redirect()->toRoute('welcome');
- }
- public function welcomeAction() {
- // Retrieve username from session
- $userSession = new Container('user');
- $username = $userSession->username; // $username now contains 'Andy0708'
- }
- }