我正在构建一个Drupal 8站点,并且是twig模板引擎的新手。对于一个特定的内容类型,我想调用外部restful api并将一些返回的数据作为twig模板中的字段呈现。
我有一个内部ID来调用API,我想嵌入模板中:
这是用树枝和drupal 8容易做的事吗? 作为次要问题,这是安全吗?
此阶段的替代方案是编写小型Drupal 8模块,但由于页面上没有用户输入,只是从返回的api调用渲染,我认为将它们放在一个地方会更容易。
答案 0 :(得分:0)
在Drupal 7中,将任意PHP放入模板是可能的,但设计很差。在Drupal 8中,故意做了很难。您不应尝试在Twig文件中执行任意PHP,也不应在处理请求后进行远程API调用。
你应该调用API并在到达twig之前收集数据。您应该创建一个处理API交互的自定义模块,并将响应放在字段,块或其他结构中,以便在适当的上下文中进行呈现(通常,自定义块适用于此类事情,但确切地说哪种方法最有意义取决于你的项目)。您还应该记住,除非API调用非常简单且非常快,否则任何需要远程API调用的页面都可能很慢。 BigPipe模块可以帮助您解决这些速度问题,但需要额外的学习曲线。
如果您希望浏览器处理API调用,您将需要创建一个div(或类似的标记)来放置结果,并将JavaScript附加到结构并在大部分页面加载后进行实际的API调用已经完成了。
至于安全性:它和你一样安全。 Drupal将提供一些帮助以避免最常见的安全性错误,但您仍然可以做一些使其不安全的事情(例如与不受信任的第三方共享数据或假设响应数据始终是安全的)。