Конфигурация модели
Конфигурация моделей 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
})
Подробнее смотрите в разделе элементы формы.