从存储库访问会话中两个值的方法 - Symfony2

Way to access from a repository to two values in session - Symfony2

我在会话中有两个值:

classroom and subject

我在我的网络中用处理程序更新了这个值,我在多个控制器中使用,但我有问题?

我调用了一个 EntityRepository 并多次使用了各种函数,具有相同的两个值:classroom 和 subject,所以我决定修改 EntityRepository 的构造函数:

class StudentRepository extends EntityRepository
{
    function __construct($em, ClassMetadata $class) {

      parent::__construct($em, $class);
      $this->classroom = $this->getRequest()->getSession()->get('classroom');
      $this->subject = $this->getRequest()->getSession()->get('subject');
    }
....

但是,很明显,不起作用,因为我无法访问 EntityRepository 中的会话,而且我认为将这 2 个值放在这个 ER 的每个函数中真的很糟糕,所以,有什么选择吗?

谢谢

您是否考虑过 DI(延迟)session?您可以将以下内容添加到您的服务中:

student_repository_Service:
...
calls:
    - [setSession, ["@session"]]

然后,创建 setSession 方法,将 session 存储在变量中,您可以从 $this->session...[=13= 访问 session ]