Быстрый старт
Отрисовать шаблон с данными можно фасадом:
use Boshnik\PageBlocks\Facades\View;
View::make('@INLINE <p>{$title}</p>', ['title' => 'Главная']);или хелпером — это то же самое, короче:
view('file:templates/base.tpl', ['title' => 'Главная']);Сигнатура у обоих одна:
view(string $template, array $params = [], callable $callback = null): stringТретий аргумент — обработчик готового HTML. Что означает префикс в имени шаблона — в Типах шаблонов.
💡 Из контроллера
Route::get('/', function () {
return view('file:templates/base', ['name' => 'PageBlocks']);
// => ищет core/App/elements/templates/base.tpl
});🔧 Из сниппета MODX
Сниппет MyProfile выводит профиль текущего пользователя:
<?php
$user = $modx->user;
return view('file:blocks/profile.tpl', [
'username' => $user->get('username'),
'email' => $user->getOne('Profile')->get('email'),
]);core/App/elements/blocks/profile.tpl:
<div class="profile">
<h2>{$username}</h2>
<p>Email: {$email}</p>
</div>Передавать $modx не нужно
View кладёт его в каждый шаблон сам — см. Доступные данные. Так что в примере выше можно было обойтись {$modx->user->username} и вовсе без параметров.
Пусто вместо ошибки
Не нашёлся шаблон — view() вернёт пустую строку, а причина уйдёт в лог MODX и назовёт источник, в котором искали: [Fenom] chunk 'header' not found in the database; for a file write file:header или [Fenom] file blocks/card.tpl not found under …. Пустое место на странице стоит искать там, а не в {if}.