Php 与Symfony一起使用服务中的会话
我想在Symfony的服务中使用我的用户会话 因此,我的控制器中有:Php 与Symfony一起使用服务中的会话,php,session,symfony,Php,Session,Symfony,我想在Symfony的服务中使用我的用户会话 因此,我的控制器中有: $service = $this->container->get('myservice'); $timeline = $service->getThing(); 我需要在函数getting()中检索我的用户会话。 我不想像getThing($session) 我该怎么做呢?您可以将会话注入到您的服务中。容器中的会话密钥是@Session,正如@Igor所说,将会话(和安全上下文)注入控制器(因为它是一个服务
$service = $this->container->get('myservice');
$timeline = $service->getThing();
我需要在函数getting()
中检索我的用户会话。
我不想像getThing($session)
我该怎么做呢?您可以将会话注入到您的服务中。容器中的会话密钥是
@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,在我的服务的构造中检索$session,但是我如何用$this->session检索用户id?您不应该直接从会话中提取用户。而是注入@security.context
并从令牌获取用户。