繁体   English   中英

在Symfony中使用会话进行服务

[英]Use session in service with Symfony

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

所以,我在控制器中:

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

我需要在功能getThing() ,检索我的用户会话。 我不想添加像getThing($session)这样的getThing($session)

我怎样才能做到这一点 ?

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

Services.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM