我有我的类MyTwigExtension extensions ''Twig_Extension,我在其中为twig创建了过滤器。我想在实现新过滤器时使用服务。像这样:
$canView = $this->get('security_service')
->hasClassPermission(
'MyBundle:MyEntity',
$this->get('security.context')->getToken()->getUser(),
array(MaskBuilder::MASK_VIEW)
);
进入控制器,这工作正常,但在它之外...
检查一下我在这里给出的关于控制器外部依赖注入的答案。
然后查看此链接,了解如何将您的TwigExtension
注册为服务。
只是一个快速编辑,有时,当您TwigExtension
作为服务时,您无法直接注入某些服务,因为它会导致ScopeWideningException
。如果出现此异常,则可以将scope = request
添加到服务定义中。如果它仍然引发异常,请注入整个依赖项容器,并执行$this->container->get('service.id.here')
来检索所需的服务。
希望对您有所帮助。
问候
马 特