0
我想在Symfony的服務中使用我的用戶會話。與Symfony一起使用會話
所以,我在我的控制器:
$service = $this->container->get('myservice');
$timeline = $service->getThing();
我需要,在功能getThing()
,找回我的用戶會話。 我不想添加會話像getThing($session)
我該怎麼做?
我想在Symfony的服務中使用我的用戶會話。與Symfony一起使用會話
所以,我在我的控制器:
$service = $this->container->get('myservice');
$timeline = $service->getThing();
我需要,在功能getThing()
,找回我的用戶會話。 我不想添加會話像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
。
我已經試過了。我在參數中添加@session,在我的服務構造中檢索$ session,但是如何檢索$ this-> session的用戶ID? –
您不應該直接從會話中拉出用戶。相反,注入'@ security.context'並從令牌獲取用戶。 –