Конфигурация моделей SleepingOwl Admin должны быть расположены в директории bootstrapDirectory (по умолчанию: app/admin).

Вы можете хранить конфигурацию моделей в одном файле или разделить на несколько по желанию.

Ниже приведен пример того, как может выглядеть конфигурация модели:

Admin::model(\App\District::class)
    ->title('City Districts')
    ->with('streets', 'schools', 'city')
    ->filters(function ()
{
    ModelItem::filter('city_id')->title()->from(\App\City:class);
})
    ->columns(function ()
{
    Column::string('title', 'Title');
    Column::string('city.title', 'City')
        ->append(Column::filter('city_id')->value('city.id'));
    Column::string('stub', 'Url stub');
    Column::count('streets', 'Streets')
        ->append(Column::filter('district_id')->model(\App\Street::class));
})
    ->form(function ()
{
    FormItem::text('title', 'Title');
    FormItem::text('url', 'Url stub');
    FormItem::text('zoom', 'Zoom level');
    FormItem::text('latitude', 'Center (latitude)');
    FormItem::text('longitude', 'Center (longitude)');
    FormItem::view('admin.districts.my_custom_view_with_script');
});

Связь с моделью

Admin::model(\Foo\Bar\Model::class)

Если вы используете PHP версии ниже 5.5, можете использовать строковое представление:

Admin::model('\Foo\Bar\Model')

Заголовок

->title('My Model Title')

Заголовок модели и текст элемента меню.

Указание Alias

->as('districts')

Alias будет использован в url`ах. По умолчанию alias — множественная форма названия модели в нижнем регистре.

Асинхронный режим

->async()

Вы можете включить асинхронный режим (по умолчанию выключен).

Фильтрация по каждому столбцу

->columnFilter()

Это добавит поле для ввода фильтра вниз каждого столбца, которое будет фильтровать значения только из этого столбца.

Eager Loading

->with('city', 'schools')

Или вы можете указать связи в массиве:

->with(['city', 'schools'])

Модель будет загружаться с указанными связями.

Запрет на создание записей

Вы можете запретить создание новых записей совсем:

->denyCreating()

или указать функцию, которая будет решать:

->denyCreating(function ()
{
    return (date('d') <= 15); // deny creating in first 15 days of month
})

Запрет на редактирование и удаление

Вы можете запретить редактирование и/или удаление совсем:

->denyEditing()
->denyDeleting()
->denyEditingAndDeleting()

или указать функцию, которая будет решать:

->denyEditing(function ($instance)
{
    return ($instance->title === 'Dont edit this'); // deny editing of entities by condition
})
->denyEditingAndDeleting(function ($instance)
{
    return ($instance->id == 1);
})

Фильтры

->filters(function ()
{
    // create filters for this model here
})

Подробнее смотрите в разделе фильтры.

Столбцы

->columns(function ()
{
    // create columns for this model here
})

Подробнее смотрите в разделе столбцы.

Форма создания/редактирования

->form(function ()
{
    // create form for this model here
})

Подробнее смотрите в разделе элементы формы.