与Symfony一起使用服务中的会话


Use session in service with Symfony

我想在带有Symfony的服务中使用我的用户会话。

所以,我的控制器里有:

$service = $this->container->get('myservice');
$timeline = $service->getThing();

我需要在函数getThing()中检索我的用户会话。我不想像getThing($session) 那样添加会话

我该怎么做?

正如@Igor所说,将会话(和安全上下文(注入控制器(因为它是一个服务(。

服务.yml

services:
    my.controller:
        class: "%mybundle.controller.foo.class%"
        arguments: [@session, @security.context]

控制器;

<?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();
    }
}

您可以将会话注入服务。容器中的会话密钥是@session