我在一个控制器中创建了一个会话变量,我想在另一个控制器中访问它.在loginsuccess控制器中我设置会话:
$session->set('id',$id);
Run Code Online (Sandbox Code Playgroud)
如何在另一个控制器中访问此变量?
Cyp*_*ian 27
有session你应该使用的服务:
$id = $this->get('session')->get('id');
Run Code Online (Sandbox Code Playgroud)
要么
$this->get('session')->set('id', $id);
Run Code Online (Sandbox Code Playgroud)
Adr*_* C. 12
更一般地说,如果您的控制器从基本Symfony控制器(Symfony\Bundle\FrameworkBundle\Controller\Controller)扩展,您可以通过3种方式获得会话:
$session = $this->container->get('session');$session = $this->get('session'); (这基本上是1的捷径)$session = $request->getSession();虽然 Cyprian 答案是有效的,但您会在文档中找到以下用法:
use Symfony\Component\HttpFoundation\Session\Session;
$session = new Session();
$session->start();
// set and get session attributes
$session->set('id',$id);
$session->get('id'); //this is the line you are looking for
Run Code Online (Sandbox Code Playgroud)
http://symfony.com/doc/master/components/http_foundation/sessions.html
笔记:
虽然建议显式启动会话,但会话实际上是按需启动的,也就是说,如果发出任何会话请求来读取/写入会话数据。
| 归档时间: |
|
| 查看次数: |
36492 次 |
| 最近记录: |