Помощник ячеек
Помощник ячеек
Зачастую шаблоны в проекте имеют общие элементы, вроде хорошо известных заголовка и футера. Используя этот помощнит, статичный код HTML может быть помещён в файл разметки вместе с "ячейками", которые представляют динамические части, изменяющиеся от страницы к странице. Эти ячейки потом заполняются разными дочерними шаблонами. Другими словами, файл разметки украшает дочерний шаблон.
Отображение ячеек
Ячейки доступны с использованием помощника ячеек ($view['slots']
). Используйте
output(), чтобы
отобразить содержание ячейки в этом месте:
1 2 3 4 5 6 7 8 9 10 11 12
<!-- views/layout.php -->
<!doctype html>
<html>
<head>
<title>
<?php $view['slots']->output('title', 'Default title') ?>
</title>
</head>
<body>
<?php $view['slots']->output('_content') ?>
</body>
</html>
Первый аргумент метода - это имя ячейки. Метод имеет необязательный второй аргумент, который является значением по умолчанию, используемым, если ячейка недоступна.
Ячейка _content
- это специальный набор ячеек от PhpEngine
. Он имеет
содержание подшаблона.
Caution
Если вы используете компонент отдельно, убедитесь в том, что вы зарегистрировали SlotsHelper:
1 2 3 4
use Symfony\Component\Templating\Helper\SlotsHelper;
// ...
$templateEngine->set(new SlotsHelper());
Расширение шаблонов
Метод extend() вызывается в подшаблоне,
чтобы установить его родительский шаблон. Потом
$view['slots']->set()
может быть использован, чтобы установить содержание ячейки. Всё содержание, которое не
установлено в ячейке ясно, находится в ячейке _content
.
1 2 3 4 5 6 7 8 9 10 11
<!-- views/page.php -->
<?php $view->extend('layout.php') ?>
<?php $view['slots']->set('title', $page->title) ?>
<h1>
<?php echo $page->title ?>
</h1>
<p>
<?php echo $page->body ?>
</p>
Note
Возможны множественные уровни наследования: разметка может расширять другую разметку.
Для больших ячеек также существует расширенный синтаксис:
1 2 3
<?php $view['slots']->start('title') ?>
Большое количество HTML
<?php $view['slots']->stop() ?>