创建树枝过滤器时使用服务(在控制器外部)

时间:2012-04-23 16:31:11

标签: php service symfony twig

我有我的班级MyTwigExtension extends \ Twig_Extension,我已经为twig创建了我的过滤器。 我想在实现新过滤器时使用服务。像这样:

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

进入控制器这项工作正常,但在外面...

1 个答案:

答案 0 :(得分:0)

检查我在控制器here之外的依赖注入时给出的答案。

然后查看此link,了解如何将TwigExtension注册为服务。

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

希望它有所帮助。

的问候,
马特