【问题标题】:Use a service when creating a twig filter (outside a controller)创建树枝过滤器时使用服务(在控制器之外)
【发布时间】:2014-12-15 09:25:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: php service symfony twig


    【解决方案1】:

    检查我给出的关于控制器外部依赖注入的答案here

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

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

    希望对你有帮助。

    问候,
    马特

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多