使用Include和Extends总是报错无法加载
Use Include and Extends always showing error and can't be loaded
我有 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>
我尝试在 base.twig
中导入 header.twig
但没有成功,并且仍然收到这样的错误消息:
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 -->
我错过了什么?我的代码有什么问题?,我在 https://twig.sensiolabs.org/doc/2.x/ 中读到。请给我解决方案或其他东西。谢谢。
你的 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>
并在您的 header.twig 文件中
{% extends 'base.twig' %}
{% block body %}
// your content goes here
{% endblock %}
我试过了,效果很好...
否则,如果您想在基础文件中包含 header。然后只需添加
{% include 'partials/header.twig' %}
在基础文件的 body 块内。
只需删除 header.html.twig
的延伸。阅读the documentation。
扩展某些父模板的模板不能包含在父模板中,因为存在无限循环。
如果你想分离部分代码,只需将它拆分到另一个树枝并包含它。
但是如果你想创建基于另一个的独立模板,那么模板必须扩展 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>
header.html.twig
<div>
my header
</div>
articles.html.twig
{% extends base.html.twig %}
{% block body %}
<div>
articles content
</div>
{% endblock %}
现在,您从控制器中渲染的 articles.html.twig
应该如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
<div>
my header
</div>
<div>
articles content
</div>
</body>
</html>
我有 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>
我尝试在 base.twig
中导入 header.twig
但没有成功,并且仍然收到这样的错误消息:
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 -->
我错过了什么?我的代码有什么问题?,我在 https://twig.sensiolabs.org/doc/2.x/ 中读到。请给我解决方案或其他东西。谢谢。
你的 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>
并在您的 header.twig 文件中
{% extends 'base.twig' %}
{% block body %}
// your content goes here
{% endblock %}
我试过了,效果很好...
否则,如果您想在基础文件中包含 header。然后只需添加
{% include 'partials/header.twig' %}
在基础文件的 body 块内。
只需删除 header.html.twig
的延伸。阅读the documentation。
扩展某些父模板的模板不能包含在父模板中,因为存在无限循环。 如果你想分离部分代码,只需将它拆分到另一个树枝并包含它。
但是如果你想创建基于另一个的独立模板,那么模板必须扩展 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>
header.html.twig
<div>
my header
</div>
articles.html.twig
{% extends base.html.twig %}
{% block body %}
<div>
articles content
</div>
{% endblock %}
现在,您从控制器中渲染的 articles.html.twig
应该如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
<div>
my header
</div>
<div>
articles content
</div>
</body>
</html>