如何在Twig中将渲染后的HTML内容赋值给变量
Twig捕获渲染内容到变量的实现方法
使用Twig内置的{% capture %}标签即可高效实现需求,这是Twig原生支持的特性,性能开销极低,同时能保证代码的可读性。
具体实现代码如下:
{% capture output %} {% for delivery in order.deliveries %} {% for trackingCode in delivery.getTrackingCodes() %} <a href="{{ delivery.shippingMethod.trackingUrl|replace({"%s":trackingCode}|raw) }}">{{ trackingCode }}</a><br/> {% endfor %} {% endfor %} {% endcapture %}
使用说明:
{% capture 变量名 %}和{% endcapture %}标签包裹的所有代码会先完成完整渲染,最终渲染结果会直接赋值给你指定的变量(示例中为output)- 后续需要输出内容时直接调用
{{ output }}即可,符合你预期的调用方式 - 如果需要输出的内容包含不可信的用户输入,可根据场景配合
|raw过滤器使用:{{ output|raw }}
针对简单短内容的备选方案:
如果只是非常短的字符串拼接场景,也可以直接用~运算符拼接赋值:
{% set output = '<a href="' ~ linkUrl ~ '">' ~ linkText ~ '</a>' %}
涉及循环、多层逻辑的复杂HTML块,优先使用capture方案,可维护性更高。
内容的提问来源于stack exchange,提问作者megloff
相关产品推荐
相关产品推荐

