如何将 HTML 呈现给变量
How to render HTML to a variable
我需要呈现包含内容的 HTML 元素列表并将其放入变量中。我怎样才能在树枝中高效地做到这一点?
例如我需要呈现订单中的 post 跟踪 URL,该订单可能有多个运输/包裹。
{% for delivery in order.deliveries %}
{% for trackingCode in delivery.getTrackingCodes() %}
<a href="{{ delivery.shippingMethod.trackingUrl|replace({"%s":trackingCode}|raw) }}">{{ trackingCode }}</a><br/>
{% endfor %}
{% endfor %}
与其将其直接打印到输出中,我更喜欢先将渲染后的输出放入一个变量中,例如
{% set output = ... %}
...
{{ output }}
如何在 twig 中执行此操作?
只需将 html 连接到 output
变量。请记住,您需要在 for
循环外定义变量,以便在循环外使用它。
{% set foo = '' %}
{% for i in 1..10 %}
{% set foo = foo ~ '<a href="#">'~i~'</a>' %}
{% endfor %}
{{ foo|raw }}
经过长时间的搜索,我找到了一种更好更有效的方法
您可以将 {% set var %}
与 {% endset %}
一起用作整个输出块。意味着整个输出将被设置为变量。这使生活变得更加轻松和可读。
例如
{% set trackingText %}
{% for delivery in order.deliveries %}
{% for trackingCode in delivery.getTrackingCodes() %}
<a href="{{ delivery.shippingMethod.trackingUrl|replace({"%s":trackingCode}|raw) }}">{{ trackingCode }}</a><br/>
{% endfor %}
{% endfor %}
{% endset %}
...
{% if trackingText|trim is not empty %}
You can track the delivery by using the following URL:<br/>
{{ trackingText }}
<br/>
{% endif %}
我需要呈现包含内容的 HTML 元素列表并将其放入变量中。我怎样才能在树枝中高效地做到这一点?
例如我需要呈现订单中的 post 跟踪 URL,该订单可能有多个运输/包裹。
{% for delivery in order.deliveries %}
{% for trackingCode in delivery.getTrackingCodes() %}
<a href="{{ delivery.shippingMethod.trackingUrl|replace({"%s":trackingCode}|raw) }}">{{ trackingCode }}</a><br/>
{% endfor %}
{% endfor %}
与其将其直接打印到输出中,我更喜欢先将渲染后的输出放入一个变量中,例如
{% set output = ... %}
...
{{ output }}
如何在 twig 中执行此操作?
只需将 html 连接到 output
变量。请记住,您需要在 for
循环外定义变量,以便在循环外使用它。
{% set foo = '' %}
{% for i in 1..10 %}
{% set foo = foo ~ '<a href="#">'~i~'</a>' %}
{% endfor %}
{{ foo|raw }}
经过长时间的搜索,我找到了一种更好更有效的方法
您可以将 {% set var %}
与 {% endset %}
一起用作整个输出块。意味着整个输出将被设置为变量。这使生活变得更加轻松和可读。
例如
{% set trackingText %}
{% for delivery in order.deliveries %}
{% for trackingCode in delivery.getTrackingCodes() %}
<a href="{{ delivery.shippingMethod.trackingUrl|replace({"%s":trackingCode}|raw) }}">{{ trackingCode }}</a><br/>
{% endfor %}
{% endfor %}
{% endset %}
...
{% if trackingText|trim is not empty %}
You can track the delivery by using the following URL:<br/>
{{ trackingText }}
<br/>
{% endif %}