这里有两个问题说注入(inject)整个服务容器应该可以解决这个问题。但是问题......见下文(注意尝试2和3之间的区别)......
试试 1
public function __construct(SecurityContext $securityContext) {
$this->securityContext = $securityContext);
}
类(class)引用。好的 ...
试试 2
public function __construct(ContainerInterface $container) {
$this->securityContext = $container->get('security.context');
}
循环引用( 为什么?,我像在尝试 3 中一样注入(inject)容器,除了我只获得了安全上下文)
试试 3
public function __construct(ContainerInterface $container) {
$this->container = $container;
}
作品。
最佳答案
发生这种情况是因为您的安全上下文取决于此监听器,可能是通过将实体管理器注入(inject)用户提供程序。最好的解决方案是将容器注入(inject)到监听器中并懒惰地访问安全上下文。
我通常不喜欢将整个容器注入(inject)到服务中,但对 Doctrine 监听器异常(exception),因为它们是急切加载的,因此应该尽可能地懒惰。
关于symfony - 将安全上下文注入(inject)(实体监听器)类时的循环引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8708822/