0

我的班级 MyTwigExtension 扩展了 \Twig_Extension,我在其中为树枝创建了过滤器。我想在实现新过滤器时使用服务。像这样的东西:

$canView = $this->get('security_service')
                ->hasClassPermission(
                        'MyBundle:MyEntity',
                        $this->get('security.context')->getToken()->getUser(), 
                        array(MaskBuilder::MASK_VIEW)
                 );

进入控制器这工作正常,但在它之外......

4

1 回答 1

0

在这里查看我在控制器外部的依赖注入给出的答案。

然后检查此链接以查看如何将您的注册TwigExtension为服务。

只是快速编辑,有时,当您TwigExtension作为服务执行时,您不能直接注入某些服务,因为它会导致ScopeWideningException. 如果您收到此异常,则可以添加scope = request到您的服务定义中。如果它仍然抛出异常,注入整个依赖容器并$this->container->get('service.id.here')检索你需要的服务。

希望能帮助到你。

问候,
马特

于 2012-04-23T16:38:56.087 回答