Добавляем данные в data collector:
data([
"title" => "title",
"content" => view("index", [
'foo' => 'foo',
'bar' => 'bar'
]),
]);
Доставляем данные в layout:
render("layout", data());
Путь к файлам шаблонизатора указывается в базовом контроллере контейнера, например WebController для контейнера Web:
UI/tmpl/
расширение файла указано там же, по умолчанию:
*.phtml
Пример layout.phtml:
<!doctype html>
<html lang="en">
<head>
<title><?= $title ?></title>
</head>
<body>
<?= $content ?>
</body>
</html>
Пример layout.phtml:
<?= $foo ?>
<br>
<?= $bar ?>
Результат:
foo
bar