php 如何替换模板中的字符串twig?

igetnqfo  于 2022-12-02  发布在  PHP
关注(0)|答案(2)|浏览(138)

我有一个html格式的twig模板,例如:

<p>Test document</p>

<p>However</p>

我想替换包含模板中的单词“Test”。{% include '@template/testing' %}
有没有什么解决方案可以替换include语句中的单词?
我试着在{% include '@template/testing' %}里面使用replace,但是我不知道如何启动它。

wecizke3

wecizke31#

仔细查看文档:
所包括的模板可以访问活动上下文的变量。
...
您可以通过在with关键字之后传递其他变量来添加这些变量:

{# template.html will have access to the variables from the current context and the additional ones provided #}
{% include 'template.html' with {'foo': 'bar'} %}

{% set vars = {'foo': 'bar'} %}
{% include 'template.html' with vars %}

您可以通过附加唯一的关键字来禁用对上下文的访问:

{# only the foo variable will be accessible #}
{% include 'template.html' with {'foo': 'bar'} only %}
{# no variables will be accessible #}
{% include 'template.html' only %}

--https://twig.symfony.com/doc/2.x/tags/include.html中的一个
这意味着您可以在当前模板中设置变量,并在包含的模板中引用该变量,您还可以在其中定义默认值。

模板/测试:

<p>{{ doc_name|default('Test') }} document</p>

<p>However</p>

当前模板:

{% set doc_name = 'new name' %}
{% include '@template/testing' %}

或者直接在一行中传递它:

{% include '@template/testing' with {'doc_name':'new name'} %}

相同,但包含的模板将有权访问活动上下文的变量:

{% include '@template/testing' with {'doc_name':'new name'} only %}

这些方法中的任何一种都将呈现:

<p>new name document</p>

<p>However</p>

Here is a good explanation for all this.

m528fe3b

m528fe3b2#

我找到了解决办法

{%- set block_modify -%}
{% include 'template.html' %}
{%- endset -%}

{% if 'Hi' in block_modify %}

{{ block_modify | replace ({'Hi':'Hello'}) | raw}}

{% endif %}

相关问题