【问题标题】:Call Symfony Service on demand from twig从 twig 按需调用 Symfony 服务
【发布时间】:2015-04-02 04:26:31
【问题描述】:

我创建了一个 twig 模板,该模板将创建一个带有复选框的项目表和一个 js 函数,该函数可以使用一个按钮触发,该按钮将返回选中复选框的所有项目的 ID。到目前为止,这工作正常。现在我需要调用一个服务并传递一个包含所有选定 ID 的数组。

有没有从树枝模板的 js 部分调用服务的好方法?我不想为服务创建一个控制器并使用 curl 来调用它。

最好的问候克里斯蒂安

【问题讨论】:

  • 从js不能只做ajax,所以控制器

标签: symfony twig


【解决方案1】:
# app/config/config.yml
twig:
    globals:
        myService: "@my.service"

你现在可以在树枝中使用:

{{ myService.anyMethod() }}

您还可以制作 Twig 扩展: http://symfony.com/doc/current/cookbook/templating/twig_extension.html

【讨论】:

  • 是的,我已经阅读了有关这些扩展和服务的信息,但我想它们会在页面加载时被调用。我想稍后在用户单击按钮时触发它
  • 哦,抱歉,我一开始没有理解这一点。无法从客户端(例如 js)调用服务方法,这就是 HTTP 协议的工作方式,客户端发送请求,服务器处理它,然后返回响应。浏览器和服务器没有保持连接。您可以通过对某些控制器操作的 ajax 调用来做到这一点 - 无需卷曲。
  • 就我而言,在 Symfony 3.4 中,我必须以这种方式声明我的服务:my_service: '@AppBundle\Service\MyService'。否则,我会收到 ServiceNotFoundException 异常。
猜你喜欢
  • 1970-01-01
  • 2017-07-14
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
  • 1970-01-01
  • 2013-05-25
  • 2017-10-11
  • 1970-01-01
相关资源
最近更新 更多