ブロックの外側で何かをしている場合、それらは twig ファイルの本体と見なされます。例外が明確に示すように、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 ブロックの上に a を追加してから、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
。