簡體   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