2012-04-23 60 views
0

时使用的服务,我有我的类MyTwigExtension扩展\ Twig_Extension,在那里我有我的创建过滤器的树枝。 我想在一个新的过滤器的方案中使用的服务。事情是这样的:创建树枝过滤器(控制器外)

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

到控制器这项工作很好,但外界...

回答

0

检查这个答案我介绍了依赖注入控制器here之外。

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

只是一个快速编辑,有时当你做TwigExtension作为服务时,你不能直接注入某个服务,因为它会导致ScopeWideningException。如果你得到这个例外,那么你可以添加scope = request你服务定义。如果仍然抛出一个异常,注入全依赖容器和做$this->container->get('service.id.here')检索您需要的服务。

希望它有帮助。

Regards,
Matt