我有以下Twig模板:
test_base.html
{% if language == 'sv' %}
{% set website = 'exempel.se' %}
{% else %}
{% set website = 'example.com' %}
{% endif %}
{% block content %}{% endblock %}
test.html
{% extends "test_base.html" %}
{% set link %}http://{{ website }}{% block campaign_link %}/campaign/{% endblock %}{% endset %}
{% block content %}
<div>
<a href="{{ link }}">Click here</a>
</div>
{% endblock content %}
test_sv.html
{% extends "test.html" %}
{% set language = 'sv' %}
{% block campaign_link %}/kampanj/{% endblock %}
渲染时,test.html
变为:
<div>
<a href="http:///campaign/">Click here</a>
</div>
test_sv.html
变成了这个:
<div>
<a href="http:///kampanj/">Click here</a>
</div>
因此{{ website }}
变量在set
上下文中不可用。
我做错了什么,这是期望的行为还是我遇到过错误?
答案 0 :(得分:1)
您应该在块link
内移动设置content
块,如下所示:
的test.html
{% extends "test_base.html.twig" %}
{% block content %}
{% set link %}http://{{ website }}{% block campaign_link %}/campaign/{% endblock %}{% endset %}
<div>
<a href="{{ link }}">Click here</a>
</div>
{% endblock content %}
因此test.html
的输出将为:
<div>
<a href="http://example.com/campaign/">Click here</a>
</div>
因此test_sv.html
的输出将为:
<div>
<a href="http://exempel.se/kampanj/">Click here</a>
</div>
一个工作示例here in this twigfiddle