从外部api填充树枝模板

时间:2016-06-09 04:39:11

标签: symfony templates drupal twig drupal-8

我正在构建一个Drupal 8站点,并且是twig模板引擎的新手。对于一个特定的内容类型,我想调用外部restful api并将一些返回的数据作为twig模板中的字段呈现。

我有一个内部ID来调用API,我想嵌入模板中:

  • api电话
  • 从通话中设置多个变量
  • 渲染结果(如果不存在则使用某些逻辑)

这是用树枝和drupal 8容易做的事吗? 作为次要问题,这是安全吗?

此阶段的替代方案是编写小型Drupal 8模块,但由于页面上没有用户输入,只是从返回的api调用渲染,我认为将它们放在一个地方会更容易。

1 个答案:

答案 0 :(得分:0)

在Drupal 7中,将任意PHP放入模板是可能的,但设计很差。在Drupal 8中,故意做了很难。您不应尝试在Twig文件中执行任意PHP,也不应在处理请求后进行远程API调用。

你应该调用API并在到达twig之前收集数据。您应该创建一个处理API交互的自定义​​模块,并将响应放在字段,块或其他结构中,以便在适当的上下文中进行呈现(通常,自定义块适用于此类事情,但确切地说哪种方法最有意义取决于你的项目)。您还应该记住,除非API调用非常简单且非常快,否则任何需要远程API调用的页面都可能很慢。 BigPipe模块可以帮助您解决这些速度问题,但需要额外的学习曲线。

如果您希望浏览器处理API调用,您将需要创建一个div(或类似的标记)来放置结果,并将JavaScript附加到结构并在大部分页面加载后进行实际的API调用已经完成了。

至于安全性:它和你一样安全。 Drupal将提供一些帮助以避免最常见的安全性错误,但您仍然可以做一些使其不安全的事情(例如与不受信任的第三方共享数据或假设响应数据始终是安全的)。