如果您在任何块之外执行操作,这些操作将被视为您的 twig 文件的主体。正如异常清楚地表明的那样,如果您正在扩展树枝模板,则需要覆盖扩展文件中包含的一些块,而无需任何正文。
您应该使用{% extends %}
之前没有任何包含的标签,因为扩展已经包含内容。打包的“base.html.twig”文件就是一个很好的例子:将在应用程序中随处使用的代码放在 base.html.twig 文件中:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{% block title %}Welcome!{% endblock %}</title>
{% block stylesheets %}{% endblock %}
<link rel="shortcut icon" href="{{ asset('favicon.ico') }}" />
</head>
<body>
{% block body %}{% endblock %}
{% block javascripts %}{% endblock %}
</body>
</html>
对于您的情况,您可以{% block head %}{% endblock %}
在 body 块上方添加一个,然后在您的 index.html.twig 文件中,您将覆盖此块以实现它。
{% extends '::base.html.twig' %}
{% block head %}
<li class="active"><a href="#login">Login</a></li>
{% endblock %}
这将最终输出:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Welcome!</title>
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
<li class="active"><a href="#login">Login</a></li>
</body>
</html>
结论
extends
和之间的区别在于include
您可以覆盖扩展文件中的块,而使用include
.