您能告诉我如何在 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() 方法也存在同样的问题。这段代码应该进入每个模块的模块类还是只进入应用程序的模块类一次?
在这两种情况下,我都尝试了两种方法,甚至尝试一次将此代码放入两个模块中,但我能够完成的唯一事情是在控制器的构造函数中设置会话变量,然后在操作/方法中读取它们。我无法在一个操作/方法中设置会话变量,然后在另一个操作/方法中读取它。如果我删除在控制器的构造函数中设置变量的行,我将无法再在会话中看到这些变量。会话的行为就像每次请求页面时创建和删除它一样。
我错过了什么吗?请不要将我链接到互联网上的任何资源,我已经阅读了所有这些资源,但它们并没有真正的帮助。
您无需进行任何配置即可在 Zend Framework 2 中使用会话。当然,您可以更改设置,但如果您只想启动并运行会话,那么现在不必担心。
抱歉,但我会忽略你的最后一句话;大约一个月前,我写了一篇关于这个主题的文章目的是展示如何快速开始使用 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'
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)