你能告诉我如何在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' } }