0

我希望开始使用 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);

?>

index.html的简化版本/templates如下所示:

<!doctype html>
<html>
<body>
Hello World!
{% block navigation %}Test{% endblock %}
</body>
</html>

中的navigation.html/templates看起来像这样:

{% extends "index.html" %}
{% block navigation %}
<!-- Navigation -->
<nav>
    Some navigation
</nav>
{% endblock %}

据我了解,这应该是块功能的基本工作示例。Twig 的其他方面对我来说似乎工作得很好,并且没有报告错误。确实,页面成功打印了“Test”。

我应该明确指向某个地方的navigation.html文件,还是 Twig 会自动加载文件/templates夹中的所有文件?

4

1 回答 1

1

错误:您正在呈现索引模板而不是导航模板。

在索引模板中,导航块包含“测试”,因此您的输出是正确的。如果您渲染 navigation.html,您将从 index.html 中获取您的 html 内容,并从导航模板中获取导航块(它唯一覆盖的内容)。

您总是需要渲染您希望输出的模板。一个可以扩展许多(例如,您的布局可能会扩展所有操作的模板)。

于 2012-08-31T07:42:34.007 回答