sqrt-pro / kernel
Kernel is part of SQRT Framework
Installs: 1 352
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
pkg:composer/sqrt-pro/kernel
Requires
- league/plates: ~3.0
- sqrt-pro/db: *
- sqrt-pro/url: dev-master
- symfony/debug: ~2.6
- symfony/event-dispatcher: ~2.6
- symfony/http-foundation: ~2.6
- symfony/http-kernel: ~2.6
This package is not auto-updated.
Last update: 2025-10-25 20:52:23 UTC
README
Компонент содержит базовые классы контроллера, RouteCollection и Kernel.
Для адресации используется компонент Route и DI Container.
Контроллер
Все создаваемые контроллеры должны наследовать базовый класс Controller. Каждый action контроллера должен вернуть результат для выдачи в браузер, это может быть:
- объект Response
- объект Template
- массив (будет преобразован в JsonResponse)
- значение для вывода (строка, число, и т.п.)
Базовый класс контроллера имеет набор методов для типовых действий:
- getRequest()- получить объект Request
- getUrl()- получить текущий URL
- getSession($autostart = true)- получить объект Session. Сессия стартует при первом вызове, если она явно не была запущена ранее.
- isAjax()- проверка, что сделан Ajax-запрос. Альяс для- $this->getRequest()->isXmlHttpRequest()
Ошибки
- notFound()- выбрасывает- HttpExceptionс кодом 404
- forbidden()- выбрасывает- HttpExceptionc кодом 403
Редирект
- redirect($url, $status = null)- возвращает объект RedirectResponse. По-умолчанию HTTP статус 302.
- back()- редирект на HTTP_REFERER. Если HTTP_REFERER не указан, возвращает на главную страницу.
Шаблонизатор
В системе используется шаблонизатор Plates, основанный на нативном синтаксисе PHP.
В контроллере предусмотрены методы для работы с шаблонами:
- template($name, $data = null)- Для создания объекта шаблона
- render($name, $data = null)- Создание и рендер шаблона
При необходимости донастройки, можно получить объект Engine или полностью переопределить его:
- getTemplatesEngine()- получить объект Engine
- setTemplatesEngine(Engine $engine)- задать объект Engine
В комплекте также идут два расширения для Plates, упрощающие работу с всплывающими сообщениями (FlashBag) и URL.
При использовании полного фреймворка они включены по-умолчанию, а также расширение Asset.
При подключении расширения SQRT\Plates\Extension\URL в шаблоне добавляется метод url() возвращающий
текущий объект URL. По-умолчанию в фреймворке передается объект URLImmutable.
При подключении расширения SQRT\Plates\Extension\DB в шаблоне добавляется метод db() возвращающий менеджер БД.
При подключении расширения SQRT\Plates\Extension\User в шаблоне добавляется метод user() возвращающий текущего
авторизованного пользователя.
Всплывающие сообщения (Flash-messages)
В контроллере есть метод notice($message, $type = null) добавляющий в сессию текущего пользователя всплывающее
сообщение. Такое сообщение один раз показывается пользователю и затем исчезает.
Можно получить все сообщения с помощью метода getNotices(), являющегося альясом для $this->getSession()->getFlashBag()->all()
Сообщения группируются по типу, можно указывать произвольный тип, затем использовать его для оформления сообщений:
// Пример стандартного шаблона для отображения уведомлений <?php foreach ($notices as $type => $messages): ?> <?php foreach ($messages as $message): ?> <div class="notice notice-<?= $type ?>"><?= $message ?></div> <?php endforeach ?> <?php endforeach ?>
Для упрощения, сделаны следующие альясы для трех, наиболее часто используемых ситуаций:
- Если $type == null=>info
- Если $type === false=>error
- Если $type === true=>success
Для отображения таких сообщений в шаблоне используется расширение SQRT\Plates\Extension\Notice, в шаблоне добавляется методы:
- notice($template)- рендер шаблона- $template, в который будут передана переменная- $noticesсодержащая все уведомления.
- getNotices()- получить массив всех уведомлений.
Layout
Для удобства работы с шаблоном страницы предусмотрен класс Layout - контейнер переменных для вывода в шаблон и набор хелперов.
Создать объект Layout можно вызвав метод layout($template = null) в контроллере. После формирования страницы его можно
вернуть как результат работы контроллера. Контент страницы задается с помощью setContent($content).
Хелперы Layout:
- title()- рендер тега- <title>, заданного через- setTitle. Также можно задать sprintf-шаблон через- setTitleTmpl
- header()- рендер заголовка страницы. заданного через- setHeader. Если header не указан, используется значение title.
- keywords()- рендер META-тега keywords, заданного через- setKeywords. Если значение не задано, по-умолчанию выводится значение title, но можно указать значение через- setDefaultKeywords.
- description()- рендер META-тега description. Функционально аналогичен keywords.
- addJS()- добавить js в массив скриптов, который можно получить через- getJS().
- addCSS()- добавить css в массив стилей, который можно получить через- getCSS().
При наследовании можно переопределить метод init() для настройки.