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>