2017 © Pedro Peláez
 

library kernel

Kernel is part of SQRT Framework

image

sqrt-pro/kernel

Kernel is part of SQRT Framework

  • Sunday, April 10, 2016
  • by sqrt-pro
  • Repository
  • 2 Watchers
  • 0 Stars
  • 1,204 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 2 % Grown

The README.md

SQRT\Kernel

Компонент содержит базовые классы контроллера, RouteCollection и Kernel., (*1)

Для адресации используется компонент Route и DI Container., (*2)

Контроллер

Все создаваемые контроллеры должны наследовать базовый класс Controller. Каждый action контроллера должен вернуть результат для выдачи в браузер, это может быть:, (*3)

  • объект Response
  • объект Template
  • массив (будет преобразован в JsonResponse)
  • значение для вывода (строка, число, и т.п.)

Базовый класс контроллера имеет набор методов для типовых действий:, (*4)

  • getRequest() - получить объект Request
  • getUrl() - получить текущий URL
  • getSession($autostart = true) - получить объект Session. Сессия стартует при первом вызове, если она явно не была запущена ранее.
  • isAjax() - проверка, что сделан Ajax-запрос. Альяс для $this->getRequest()->isXmlHttpRequest()

Ошибки

  • notFound() - выбрасывает HttpException с кодом 404
  • forbidden() - выбрасывает HttpException c кодом 403

Редирект

  • redirect($url, $status = null) - возвращает объект RedirectResponse. По-умолчанию HTTP статус 302.
  • back() - редирект на HTTP_REFERER. Если HTTP_REFERER не указан, возвращает на главную страницу.

Шаблонизатор

В системе используется шаблонизатор Plates, основанный на нативном синтаксисе PHP., (*5)

В контроллере предусмотрены методы для работы с шаблонами:, (*6)

  • template($name, $data = null) - Для создания объекта шаблона
  • render($name, $data = null) - Создание и рендер шаблона

При необходимости донастройки, можно получить объект Engine или полностью переопределить его:, (*7)

  • getTemplatesEngine() - получить объект Engine
  • setTemplatesEngine(Engine $engine) - задать объект Engine

В комплекте также идут два расширения для Plates, упрощающие работу с всплывающими сообщениями (FlashBag) и URL. При использовании полного фреймворка они включены по-умолчанию, а также расширение Asset., (*8)

При подключении расширения SQRT\Plates\Extension\URL в шаблоне добавляется метод url() возвращающий текущий объект URL. По-умолчанию в фреймворке передается объект URLImmutable., (*9)

При подключении расширения SQRT\Plates\Extension\DB в шаблоне добавляется метод db() возвращающий менеджер БД., (*10)

При подключении расширения SQRT\Plates\Extension\User в шаблоне добавляется метод user() возвращающий текущего авторизованного пользователя., (*11)

Всплывающие сообщения (Flash-messages)

В контроллере есть метод notice($message, $type = null) добавляющий в сессию текущего пользователя всплывающее сообщение. Такое сообщение один раз показывается пользователю и затем исчезает., (*12)

Можно получить все сообщения с помощью метода getNotices(), являющегося альясом для $this->getSession()->getFlashBag()->all(), (*13)

Сообщения группируются по типу, можно указывать произвольный тип, затем использовать его для оформления сообщений:, (*14)

~~~ php // Пример стандартного шаблона для отображения уведомлений $messages): ?> , (*15)

= $message ?>
~~~

Для упрощения, сделаны следующие альясы для трех, наиболее часто используемых ситуаций:, (*16)

  • Если $type == null => info
  • Если $type === false => error
  • Если $type === true => success

Для отображения таких сообщений в шаблоне используется расширение SQRT\Plates\Extension\Notice, в шаблоне добавляется методы:, (*17)

  • notice($template) - рендер шаблона $template, в который будут передана переменная $notices содержащая все уведомления.
  • getNotices() - получить массив всех уведомлений.

Layout

Для удобства работы с шаблоном страницы предусмотрен класс Layout - контейнер переменных для вывода в шаблон и набор хелперов., (*18)

Создать объект Layout можно вызвав метод layout($template = null) в контроллере. После формирования страницы его можно вернуть как результат работы контроллера. Контент страницы задается с помощью setContent($content)., (*19)

Хелперы 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() для настройки., (*20)

The Versions