Шаблон Twig не включая блок?
Я надеюсь начать работу с 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>
И навигация.html в /templates
выглядит примерно так:
{% extends "index.html" %}
{% block navigation %}
<!-- Navigation -->
<nav>
Some navigation
</nav>
{% endblock %}
Насколько я понял, это должен быть базовый рабочий пример функции блоков. Другие аспекты Twig, кажется, работают нормально, и об ошибках не сообщается. Действительно, на странице успешно печатается "Тест".
Должен ли я где-то явно указывать на файл navigation.html или Twig автоматически загружает все файлы в /templates
папка?
1 ответ
Ошибка: вы отображаете свой индексный шаблон вместо навигационного.
В шаблоне индекса блок навигации содержит "Тест", поэтому ваш вывод правильный. Если вы создадите файл navigation.html, вы получите HTML-контент из index.html, а блок навигации - из шаблона навигации (единственное, что он переопределяет).
Вам всегда нужно визуализировать шаблон, который вы хотите вывести. Один может быть расширен многими (например, ваш макет может быть расширен всеми шаблонами ваших действий).