我该如何在我的控制器中创建和访问Symfony 2会话变量?我使用的是以下代码:
$session = new Session();
$session->start();
$session->set('loginUserId',$user['user_id']);
我想了解如何在所有控制器中使用上述会话变量进行访问。
我该如何在我的控制器中创建和访问Symfony 2会话变量?我使用的是以下代码:
$session = new Session();
$session->start();
$session->set('loginUserId',$user['user_id']);
我想了解如何在所有控制器中使用上述会话变量进行访问。
在Symfony控制器中使用Session的一种方法是:
设置:
$this->get('session')->set('loginUserId', $user['user_id']);
获取:
$this->get('session')->get('loginUserId');
如果您使用标准框架版本
从文档中可以了解到:
Symfony会话旨在替代几个本地PHP函数。 应用程序应避免使用session_start()、session_regenerate_id()、session_id()、session_name()和session_destroy(),而是使用以下部分中的API。
并且:
虽然建议显式启动会话,但会话实际上是按需启动的,也就是说,如果有任何会话请求来读/写会话数据,会话将自动启动。
因此,会话会自动启动,并且可以通过控制器访问:
public function indexAction(Request $request)
{
$session = $request->getSession();
...
}
或者:
public function indexAction()
{
$session = $this->getRequest()->getSession();
// or
$session = $this->get('session');
...
}
比:
// store an attribute for reuse during a later user request
$session->set('foo', 'bar');
// get the attribute set by another controller in another request
$foobar = $session->get('foobar');
// use a default value if the attribute doesn't exist
$filters = $session->get('filters', array());
http://symfony.com/doc/current/components/http_foundation/sessions.html
use Symfony\Component\HttpFoundation\Session\Session;
$session = new Session();
$session->start();
// set and get session attributes
$session->set('name', 'Drak');
$session->get('name');
// set flash messages
$session->getFlashBag()->add('notice', 'Profile updated');
// retrieve messages
foreach ($session->getFlashBag()->get('notice', array()) as $message) {
echo '<div class="flash-notice">'.$message.'</div>';
}