我无法理解sf2中有关布局组成的一些原则。
我有这个App / Namespace / MyBundle / Resources / views / layout.html.twig模板:
{% extends '::base.html.twig' %}
{% block title %}Main Title{% block subtitle %}{% endblock %}{% endblock %}
{% block head %}<h1>Placeholdertitle</h1>{% endblock %}
{% block body %}{% endblock %}
{% block sidebar %}{% endblock %}
我应该如何让head.html.twig替换头块? 目前我有这个App / Bundle / Resources / views / head.html.twig模板:
{% extends 'AppNamespaceMyBundle::layout.html.twig' %}
{% block head -%}
<h1>
Main Title
</h1>
{% endblock %}
然后我用这个index.html.twig加载一个页面:
{% extends 'AppNamespaceMyBundle::layout.html.twig' %}
{% block subtitle %} | Categories{% endblock %}
{% block body -%}
<h1>Categories list</h1>
<table class="records_list">
<thead>
<tr>
<th>Id</th>
<th>Text</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for entity in entities %}
<tr>
<td><a href="{{ path('category_show', { 'id': entity.id }) }}">{{ entity.id }}</a></td>
<td>{{ entity.text }}</td>
<td>
<ul>
<li>
<a href="{{ path('category_show', { 'id': entity.id }) }}">show</a>
</li>
<li>
<a href="{{ path('category_edit', { 'id': entity.id }) }}">edit</a>
</li>
</ul>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<ul>
<li>
<a href="{{ path('category_new') }}">
Create a new entry
</a>
</li>
</ul>
{% endblock %}
在这里我得到了“Placeholdertitle”而不是“Main Title”,这意味着没有使用head.html.twig。我该如何使用head.html.twig进入layout.html.twig?
答案 0 :(得分:1)
根据您的解释,我猜您想在您的索引中渲染Layout + Head。
您可以使用以下架构:
Layout <extended by> Head <extended by> Index
。这样,当您渲染索引时,Twig将渲染头部和布局。
另一种解决方案是使用use。
PS:你不能在同一个索引文件中扩展头部和布局,正如Twig所说:模板继承是最强大的Twig功能之一,但它仅限于单继承;
答案 1 :(得分:0)
您是否尝试删除head.html.twig中头块中的“ - ”?