我正在寻求开始使用Twig,但让{%block%}完全正常工作让我感到很头疼 - 我觉得必须有一些非常明显的东西我不知道。
我的 index.php 加载程序如下所示:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
require_once( "Twig/Autoloader.inc.php" );
Twig_Autoloader::register();
$twig = new Twig_Environment( new Twig_Loader_Filesystem("templates"));
$vars = array (
"user" => array(
"name" => "Joe Bloggs"
),
"title" => "My website"
);
$tpl = $twig->loadTemplate("index.html");
echo $tpl->render($vars);
?>
/templates
中 index.html 的简化版本如下所示:
<!doctype html>
<html>
<body>
Hello World!
{% block navigation %}Test{% endblock %}
</body>
</html>
/templates
中的 navigation.html 看起来像这样:
{% extends "index.html" %}
{% block navigation %}
<!-- Navigation -->
<nav>
Some navigation
</nav>
{% endblock %}
据我了解,这应该是块功能的基本工作示例。 Twig的其他方面似乎对我来说很好,并且没有报告任何错误。实际上,该页面成功打印了“测试”。
我应该在某处明确指向 navigation.html 文件,还是Twig会自动加载/templates
文件夹中的所有文件?
答案 0 :(得分:1)
错误:您正在渲染索引模板而不是导航模板。
在索引模板中,导航块包含“Test”,因此输出正确。如果你渲染navigation.html,你将从index.html获取你的html内容,从导航模板中获取导航块(它唯一覆盖的内容)。
您始终需要渲染要输出的模板。一个可能会被许多人扩展(例如,您的布局可能会被所有操作的模板扩展)。