symfony2错误twig"扩展另一个模板的模板不能有一个正文"

时间:2015-03-19 07:54:13

标签: symfony

我有错误"扩展另一个模板的模板不能在DFSiteBundle中有一个正文:Accueil:index.html.twig",但我在块外面没有html。

复制问题的最小代码:

这不起作用:

{% extends "::layout.html.twig" %}

{% stylesheets 'bundles/DFSite/css/*' filter='cssrewrite' %}
    <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

{% block content %}
    Test
{% endblock %}

这项工作:

{% extends "::layout.html.twig" %}

{% block content %}
    Test
{% endblock %}

使用layout.html.twig:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    {% stylesheets %}{% endstylesheets %}
    <title>{% block title %}The title{% endblock %}</title>
</head>
<body>

{% block content %}
{% endblock %}

</body>

如果我直接添加

{% stylesheets 'bundles/DFSite/css/*' filter='cssrewrite' %}
    <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

而不是layout.html.twig中的空%stylesheets%,它可以正常工作

我很困惑......

1 个答案:

答案 0 :(得分:6)

这里很容易理解错误:扩展模板时,您只能使用父全新块的已定义块。

期待你的layout.html.twig,很容易注意到{% stylesheets %}你没有定义任何块。在您的子模板中,这将导致我所说的错误。

工作解决方案应该是这个

1)修改layout.html.twig

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    {% block stylesheets %}{% endblock %}
    <title>{% block title %}The title{% endblock %}</title>
</head>
<body>

{% block content %}
{% endblock %}

</body>

2)修改扩展先前模板的文件

{% extends "::layout.html.twig" %}

{% block stylesheets %}
    {% stylesheets 'bundles/DFSite/css/*' filter='cssrewrite' %}
        <link rel="stylesheet" href="{{ asset_url }}" />
    {% endstylesheets %}
{% endblock %}

{% block content %}
    Test
{% endblock %}