You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal8自定义模块如何将.module文件含HTML的变量传递到twig模板渲染

Drupal 7迁移至Drupal 8 HTML变量传递渲染解答

是可以实现的,不过要注意Twig默认开启了自动转义机制,你如果直接按示例写{{ var }},输出的会是纯文本的<p>hello world</p>,不会渲染成段落元素,有两种常用方案解决这个问题:

  • 方案一:直接在Twig模板中使用raw过滤器
    把模板里的代码改成{{ var|raw }}即可,Twig会跳过对这个变量的转义,直接渲染其中的HTML内容。这个方案修改成本低,适合变量内容完全可控、没有用户输入等不可信内容的场景。
  • 方案二:在.module文件中将变量标记为安全渲染对象
    不用修改Twig代码,只需修改.module中的变量声明代码,用Drupal核心的Markup类包裹HTML内容即可:
    原代码:
    $var = '<p>hello world</p>';
    修改后:
    $var = \Drupal\Core\Render\Markup::create('<p>hello world</p>');
    经过Markup类处理的变量会被Drupal识别为预先验证过的安全内容,传递到Twig后直接写{{ var }}就能正常渲染HTML。

注意:如果你的HTML变量中包含用户提交内容、外部抓取内容等不可信来源的文本,不要直接跳过转义,必须先做XSS过滤处理,避免出现安全漏洞。


内容的提问来源于stack exchange,提问作者Oliver Wood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:15:04