我的模板中有以下设置。我有很多像这样的子模板,subject
块每次都不同。
我有办法从父母那里访问孩子中的subjectTitle
变量集吗?
父:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width"/>
</head>
<body>
<span style="display: none !important;">{{ preHeader }}</span>
子:
{% extends 'CRMPiccoMailerBundle:Email:base.html.twig' %}
{% block subject %}
{% set subjectTitle = 'Thanks for ordering! Your Order is 1872.' %}
{{ subjectTitle }}
{% endblock %}
答案 0 :(得分:2)
实现所需结果的最佳方法是在父模板上创建一个空block
,然后在子模板上设置它的值。
答案 1 :(得分:0)
是的,您可以像任何其他变量一样访问变量。一定要检查它是否已定义,并正确流动。
我使用子变量的一种方法是样式表:
base.html.twig
<html>
<head>
<link href="css/{{ style|default('base') }}.css" rel="stylesheet" />
</head>
<body>
{% if style is not defined %}
<p>Default style applied</p>
{% else %}
<p>Styling!</p>
{% endif %}
<!-- content here -->
</body>
</html>
contact.html.twig
{% extends 'base.html.twig' %}
{% set style = 'contact' %}
...
在head部分中,我使用macro检查变量并显示默认值(如果未定义)(这仅适用于版本1.12+)。如果子模板定义了变量,它将使用其值,否则默认为基本样式表。但在身体中,我使用tags显示较旧的方式。根据是否定义了变量,决定输出哪个段落。