View-движок и хелперы
View-движок PearCMS — это плоский PHP с маленьким препроцессором над ним. Никаких отдельных DSL для шаблонов: пишете обычный PHP, плюс сахарок для локализации и настроек.
View::render и поиск файлов #
Главная точка рендера — статический метод App\View\View::render($name, $data):
return $this->layout( View::render('admin/banner/list', [ 'items' => $service->listAll(), 'csrf' => CSRF::generate(), ]) );
Путь до файла резолвится в зависимости от префикса:
admin/...→templates/admin/...php- Без префикса → активная тема в
templates/{theme}/ - В каждом случае, если файла нет — фолбэк на
default
Базовые хелперы #
Все они объявлены в app/helpers.php и доступны в любом шаблоне:
| Хелпер | Что делает |
|---|---|
e($s) | HTML-эскейп (ENT_QUOTES, UTF-8) |
__('key.path', 'fallback') | Перевод из lang/{locale}/{file}.php |
module_can($mod, $action) | Проверка флага через FlagsPanel модуля |
module_require($mod, $action, $redirect) | То же, но возвращает Response::redirect если нет прав |
module($name) | Включён ли модуль |
notify($title, $body, $url, $type, $icon) | Положить запись в notifications |
logAction($action, $description) | Записать действие в logs__actions |
Шорткоды {lang, …} и {settings, …} #
Препроцессор View превращает короткие макросы в PHP-код перед компиляцией шаблона:
<h1>{lang, 'pages.welcome'}</h1> <p>{settings, 'site_description'}</p> // разворачивается в: <h1><?= e(__('pages.welcome')) ?></h1> <p><?= e(setting('site_description')) ?></p>
Это сокращение для часто встречающихся вещей. Полный набор macros доступен и в обычном PHP — препроцессор просто экономит писанину.
Кеширование #
View считает SHA1-хеш от {шаблон + данные + локаль + тема + роль} и кладёт готовый HTML в storage/cache/views/<hash>.html. При следующем вызове, если ничего не поменялось — отдаёт из кеша без запуска PHP.
Скомпилированные шаблоны (после препроцессора) хранятся в storage/cache/views_compiled/.
/s-panel/settings/clear-cache). Также чистится при смене темы и выпуске обновления.