我正在尝试在我的Symfony2实体存储库类中获取会话变量,但不太确定如何完成此任务。
基本上我只是这样做:
$this->get('session')->set('cart_id', $cartId);
有人可以指出我正确的方向。感谢。
答案 0 :(得分:2)
这不是你想要做的事情。它闻起来很糟糕。您应该创建一个读取会话变量并将其设置为实体的服务。
答案 1 :(得分:0)
你不应该在EntityRepository中做类似的事情。您可以在控制器或服务中执行此操作。 您可以通过将实体存储库声明为如下服务来实现它:
parameters:
entity.sample_entity: "AppBundle:SampleEntity"
services:
sample_entity_repository:
class: AppBundle\Repository\SampleEntityRepository
factory: ["@doctrine", getRepository]
arguments:
- %entity.sample_entity%
calls:
- [setSession, ["@session"]]
您可以在Repository类中创建一个setSession方法,如下所示:
class SampleRepository extends EntityRepository
{
private $entity;
private $session;
public function __construct(SampleEntity $entity)
{
$this->entity = $entity;
}
public function setSession(Session $session)
{
$this->session = $session;
}
.....
}
然后在另一个函数中设置会话变量,如$ this-> session-> set('cart_id',$ cartId);