SleepingOwlAdmin

Описание работы системы

Работа системы начинается в тот момент, когда вы подключаете сервис провайдер SleepingOwl\Admin\Providers\SleepingOwlServiceProvider в ваше Laravel приложение

// config/app.php
...
'providers' => [
    ...

    /*
    * SleepingOwl Service Provider
    */
    SleepingOwl\Admin\Providers\SleepingOwlServiceProvider::class,

    /*
    * Application Service Providers...
    */
    App\Providers\AppServiceProvider::class,
...
],

После подключения, пакет SleepingOwl произведет регистрацию своих компонентов:

Если вам необходимо заменить системный шаблон, то необходимо поместить его resources\views\vendor\sleeping_owl\default\, т.е. если есть шаблон по пути sleepingowl\src\resources\default\display\extensions\columns.blade.php, то путь в системе должен быть resources\views\vendor\sleeping_owl\default\display\extensions\columns.blade.php

Регистрируемые сервис контейнеры:

// AdminSection
'sleeping_owl' => ['SleepingOwl\Admin\Admin', 'SleepingOwl\Admin\Contracts\AdminInterface']

// AdminTemplate
'sleeping_owl.template' => ['SleepingOwl\Admin\Contracts\Template\TemplateInterface']

'sleeping_owl.breadcrumbs' => ['SleepingOwl\Admin\Contracts\Template\Breadcrumbs']

// AdminWidgets
'sleeping_owl.widgets' => ['SleepingOwl\Admin\Contracts\Widgets\WidgetsRegistryInterface', 'SleepingOwl\Admin\Widgets\WidgetsRegistry']

// MessagesStack
'sleeping_owl.message' => ['SleepingOwl\Admin\Widgets\Messages\MessageStack']

// AdminNavigation
'sleeping_owl.navigation' => ['SleepingOwl\Admin\Navigation', 'SleepingOwl\Admin\Contracts\Navigation\NavigationInterface']

// WysiwygManager
'sleeping_owl.wysiwyg' => ['SleepingOwl\Admin\Wysiwyg\Manager', 'SleepingOwl\Admin\Contracts\Wysiwyg\WysiwygMangerInterface']

// Meta
'sleeping_owl.meta' => ['assets.meta', 'SleepingOwl\Admin\Contracts\Template\MetaInterface', 'SleepingOwl\Admin\Templates\Meta'],

Также для удобства работы с данными, классы полей, таблиц, форм и т.д. собраны в отдельные группы (https://github.com/LaravelRUS/SleepingOwlAdmin/blob/master/src/Providers/AliasesServiceProvider.php), доступ к данным каждой группы также осуществляется через сервис контейнер

Если вы хотите добавить, допустим, новый тип поля, вам необходимо сделать следующее

\AdminColumn::add('field_type', \App\Fields\CustomField::class);
// или
app('sleeping_owl.table.column')->add('field_type', \App\Fields\CustomField::class);

//После чего поле будет доступно следующим образом

\AdminColumn::field_type()->...
// или
app('sleeping_owl.table.column')->field_type()->...

Подключение файлов

После регистрации всех компонентов происходит поиск файлов в директории app/Admin и их подключение.

После того, как во всех сервис провайдерах приложения будет вызван метод boot, будет произведено (Вызов производится по событию app()->booted для того, чтобы вы имели возможность регистрировать модели не только через файлы в папке app/Admin, но и через сервис провайдеры):

!!! После регистрации системных роутов, создание новых разделов может привести к ошибкам при использовании алиасов !!!

Рабочий стол (Dashboard)

В стандартную сборку SleepingOwlAdmin включен пустой шаблон дашборда с возможностью вставки в него виджетов https://github.com/SleepingOwlAdmin/docs/blob/master/ru/widgets.md

При желании вы можете переопределить view шаблона дэшборда для разметки блоков для виджетов, либо переопределить роут и указать контроллер который отвечает за дашборд

Route::get('', ['as' => 'admin.dashboard', 'uses' => '\App\Http\Controllers\DashboardController@index']);