-
Notifications
You must be signed in to change notification settings - Fork 63
Контроллеры
В основе KodiCMS лежит иерархическая структура контроллеров на которых основана работа всех разделов:
|- Illuminate\Routing\Controller
|
|----- KodiCMS\CMS\Http\Controllers\System\Controller
|
|--------- KodiCMS\CMS\Http\Controllers\System\TemplateController
|
|------------------ KodiCMS\CMS\Http\Controllers\System\FrontendController
|
|--------------------------- KodiCMS\Users\Http\Controllers\Auth\AuthController
|
|--------------------------- KodiCMS\Users\Http\Controllers\Auth\PasswordController
|
|------------------ KodiCMS\CMS\Http\Controllers\System\BackendController
|
|--------------------------- KodiCMS\Dashboard\Http\Controllers\DashboardController
|
|--------------------------- ...
|
|--------- KodiCMS\CMS\Http\Controllers\System\VirtualMediaLinksController
|
|--------- KodiCMS\Pages\Http\Controllers\System\FrontPageController
|
|------------------ KodiCMS\Pages\Http\Controllers\FrontendController
|
|--------- KodiCMS\API\Http\Controllers\System\Controller
Базовый контроллер, в котором реализована авторизация и проверка прав доступа, от которого наследуются все остальные контроллеры
-
-request
-Request
-
-response
-Response
-
-session
-Session
-
-currentUser
-\KodiCMS\Users\Model\User
-
-authRequired
- Указывает нужна ли для доступа к контроллеру авторизация -
-allowedActions
- Список экшенов, которые доступны без проверки прав доступа модулемACL
-
-permissions
- Список ['action' => 'permission.name'] прав доступа к экшену контроллера
-
boot()
- запускается в момент инициализации контроллера (Можно внедрять зависимости) -
before()
- запускается до вызова экшена (мигрировал из Kohana) -
after()
- запускается непосредственно после вызова экшена (мигрировал из Kohana) -
smartRedirect()
- умный редирект, который поможет быстро перенаправить пользователя с экшенаgetCreate
наgetEdit
илиgetIndex
со страницы создания записи, а также в на именованные роуты и экшены.
В контроллере реализована работа с шаблонами сайта и подключение JS кода
-
+template
- путь до базового шаблона контроллера -
+moduleNamespace
- неймспейс для view шаблонов устанавливаемых через методsetContent(...)
-
+autoRender
- после вызова экшена автоматический вывод шаблона -
+onlyContent
- выводить только контенте без базового шаблона -
+templateScripts
- параметры, которые будут выведены в блоке<script>
в head страницы вjson
формате
-
setLayout($name)
- установка базового шаблона -
setTitle($title, $url)
- установка заголовка и хлебной крошки текущей страницы -
setContent($view, array $data = [])
- установка шаблона контента и передача необходимых параметров -
includeMergedMediaFile($key, $file)
- поиск в модулях JS файла по имени, слияние в один скрипт и подключение после загрузки JS библиотек -
includeModuleMediaFile($filename)
- подключение JS файла по виртуальному пути из модулей относительно директорииresources/js
adminDir
controllerAction
currentUser
Используется для работы с админ панелью сайта
-
+navigation
-Navigation
-
+breadcrumbs
-Breadcrumbs
currentPage
При загрузке контроллера происходит поиск JS файла контроллера с названием текущего контроллера во всех модулях.
Используется для страниц для которых не нужна авторизация
Используется для поиска в модулях media файлов в папке resources
- 'cms/{file}.{ext}'
Может быть использован для создания Fronend страницы с подключением на нее виджетов
Route::get('page/test', ['uses' => 'TestController@getIndex']); ------ use KodiCMS\Widgets\Widget\HTML; use KodiCMS\Pages\Widget\PageMenu; use KodiCMS\Pages\Http\Controllers\System\FrontPageController; class TestController extends FrontPageController { public function getIndex() { $layout = $this->getLayoutFile('normal.blade'); $menu = new PageMenu('menu'); $html = new HTML('test'); $html->header = 'content.blade'; $html->setFrontendTemplate('content.blade'); $footer = new HTML('footer'); $this->widgetCollection->addWidget($menu, 'header', 100); $this->widgetCollection->addWidget($html, 'header'); $this->widgetCollection->addWidget($footer, 'footer'); return $this->render($layout); } }
Загрузка frontend страниц, если не сработал ни один системный маршрут (route)
cms:make:controller ControllerName --module=modulename
- создаст новый пустой Backend контроллер в папке указанного модуля (название модуля можно указывать в любом регистре), если модуль не существует, то команда вернет ошубку. Для создания API
контроллера необходимо указать параметр --type=api