【问题标题】:symfony2: how to access service from templatesymfony2:如何从模板访问服务
【发布时间】:2012-11-06 02:52:22
【问题描述】:

如果我创建了一项服务,有没有办法从 twig 访问它,而无需创建 twig.extension?

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    您可以在config.yml 中为服务设置一个树枝全局变量,例如

    #app/config/config.yml
    twig:
        globals:
            your_service: "@your_service"
    

    在您的template.html.twig 文件中,您可以通过这种方式调用您的服务:

    {{ your_service.someMethod(twig_variable) }}
    

    here

    【讨论】:

    • 或者通过“@service_container”获取整个容器
    • @Gigala 只注入你真正需要的东西,更干净。
    • 只是说,有些人可能想要整件事
    • 我可能更喜欢将服务插入到 controllerAction 中,而不是作为全局变量 o.O
    • 在我的服务中,我有一些参数,如@request,所以我有这个错误:定义“twig”引用了属于更窄范围的服务“my_service”。我该怎么办?
    【解决方案2】:

    要在 Symfony 5 中完成这项工作,首先您必须在 services.yaml 中声明服务,例如:

    应用\服务\导航助手: 论据: 富:酒吧

    然后您可以声明该服务以在 Twig 中使用。为此,您必须将其作为变量添加到位于 packages/twig.yaml 中的 Yaml 文件的“全局”部分:

      globals:
        navHelper: '@App\Service\NavigationHelper'
    

    现在您可以按照 Mun Mun Das 在他的上一个代码 sn-p 中建议的那样使用模板中的服务方法。

    【讨论】:

      猜你喜欢
      • 2013-04-23
      • 2011-11-03
      • 1970-01-01
      • 2011-10-19
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      相关资源
      最近更新 更多