[英]Use session in service with Symfony
I want to use my user session in a service with Symfony. 我想在Symfony的服务中使用我的用户会话。
So, i have in my controller : 所以,我在控制器中:
$service = $this->container->get('myservice');
$timeline = $service->getThing();
I need, in the function getThing()
, retrieve my user session. 我需要在功能
getThing()
,检索我的用户会话。 I don't want to add the session like getThing($session)
我不想添加像
getThing($session)
这样的getThing($session)
How can i do that ? 我怎样才能做到这一点 ?
As @Igor says, inject session (and security context) into your controller (as it is a service). 正如@Igor所说,将会话(和安全上下文)注入到控制器中(因为它是一种服务)。
Services.yml Services.yml
services:
my.controller:
class: "%mybundle.controller.foo.class%"
arguments: [@session, @security.context]
Controller; 控制器;
<?php
use Symfony\Component\HttpFoundation\Session\Session;
class Foo
{
private $sessionManager;
private $securityContext;
public function __construct(Session $session, $security_context)
{
$this->sessionMananger = $session;
$this->securityContext = $security_context;
}
public function someAction()
{
$id = $this->getId();
}
private function getId()
{
return $this->securityContext->getToken()->getUser()->getId();
}
}
You can inject session to your service. 您可以将会话注入您的服务。 Session key in container is
@session
. 容器中的会话密钥为
@session
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.