Symfony 使用Include和Extends始终显示错误和can';不可加载

Symfony 使用Include和Extends始终显示错误和can';不可加载,symfony,twig,template-engine,templating,twig-extension,Symfony,Twig,Template Engine,Templating,Twig Extension,我有这样的base.twig: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=996"> &l

我有这样的
base.twig

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=996">
        <meta name="description" content="{{ meta_description }}">
        <meta name="author" content="">
        <link rel="icon" href="{{ assets_url }}img/ico.png">
        <title>{{ meta_title }}</title>
        <link rel="stylesheet" href="{{ assets_url }}css/main.css">
        <script src="{{ assets_url }}js/jquery-1.11.3.min.js"></script>
        <script src="{{ assets_url }}js/plugin.js"></script>
        <script src="{{ assets_url }}js/main.js"></script>
    </head>
    <body>

        {% include 'partials/header.twig' %}

    </body>
</html>
Fatal error: Uncaught Twig_Error_Syntax: A template that extends another one cannot include contents outside Twig blocks. Did you forget to put the contents inside a {% block %} tag? 
这是
header.twig
文件:

{% extends "base.twig" %}

<!-- my content header is here -->
{%extends“base.twig”%}

我错过了什么?“我的密码怎么了?”我读到。请给我一个解决办法或别的什么。谢谢

你的base.twig应该是这样的

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=996">
        <meta name="description" content="{{ meta_description }}">
        <meta name="author" content="">
        <link rel="icon" href="{{ assets_url }}img/ico.png">
        <title>{{ meta_title }}</title>
        <link rel="stylesheet" href="{{ assets_url }}css/main.css">
        <script src="{{ assets_url }}js/jquery-1.11.3.min.js"></script>
        <script src="{{ assets_url }}js/plugin.js"></script>
        <script src="{{ assets_url }}js/main.js"></script>
    </head>
    <body>
        {% block body %}
        {% endblock %}
    </body>
</html>
我试过它会很好的

否则,如果要在基文件中包含头文件。然后只需添加

{% include 'partials/header.twig' %}

在基本文件的块体内部。

只需从
header.html.twig
中删除扩展即可。阅读

扩展某些父模板的模板不能包含在父模板中,因为存在无限循环。 如果您想分离代码的一部分,只需将其拆分为另一个分支并包含它

但是,如果您想创建基于另一个模板的独立模板,那么该模板必须扩展
base.html.twig

例如,
articles.html.twig
扩展了
base.html.twig
,其中包括
header.html.twig

代码:

base.html.twig

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        {% include 'partials/header.html.twig' %}

        {% block body %}
        {% endblock %}
    </body>
</html>
<div>
   my header
</div>
{% extends base.html.twig %}

{% block body %}
    <div>
        articles content
    </div> 
{% endblock %}

我试过你的脚本,可以加载。但是如果我用同样的方法添加“footer.twig”(使用block)。我的基本文件无法停止加载并输出许多标题感谢您的回答。但是header.twig不在标记中。我的意思是,header.twig是标题内容,比如搜索、菜单导航等等。谢谢先生:)我有一个问题,如果我把include放在header.twig里面,我会把文件变成php或者仍然是base.php?你可以把一个模板包含到另一个嵌套的模板中。但你必须记住无限循环。任何子级都不能包含父级模板。例如,您的基础可以包括页眉/正文/页脚模板,页眉可以包括搜索/登录模板,而登录可以包括用户和服务条款模板。但是搜索不能包含标题,因为标题模板是搜索的父级。但是我不确定我是否理解你的问题。是的,我理解你的解释。我可以在下一个问题中给你一个样品吗?
{% extends base.html.twig %}

{% block body %}
    <div>
        articles content
    </div> 
{% endblock %}
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <div>
            my header
        </div>

        <div>
            articles content
        </div>  
    </body>
</html>