Symfony在实体存储库类中获取会话变量

时间:2016-02-21 01:28:03

标签: php symfony

我正在尝试在我的Symfony2实体存储库类中获取会话变量,但不太确定如何完成此任务。

基本上我只是这样做:

$this->get('session')->set('cart_id', $cartId);

有人可以指出我正确的方向。感谢。

2 个答案:

答案 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);