Столбцы
Создает новый столбец типа {type}
:
Column::{type}('{field name}')
Поддерживаемые типы
Заголовок столбца
Вы можете задать заголовок столбца следующим кодом:
…->label('My Column Header')
Создание собственного столбца
Вы можете зарегистрировать свой класс в качестве столбца:
Column::register('yesNo', \Acme\YesNoColumn::class)
Ваш класс столбца должен расширять SleepingOwl\Admin\Columns\Column\BaseColumn
(если вам не нужно получать значение из объекта по имени) или SleepingOwl\Admin\Columns\Column\NamedColumn
(в противном случае).
class YesNoColumn extends SleepingOwl\Admin\Columns\Column\NamedColumn
{
public function render()
{
$params = [
'value' => $this->getValue($this->instance, $this->name()),
];
return view('my-view', $params);
}
}
Использование в конфигурации модели:
$display->columns([
Column::yesNo(),
]);
Запрет на сортировку по столбцу
Column::string('my_field')->orderable(false)
Дополнения к столбцам
Дополнение Filter
Column::filter('{filter_alias}')->model('App\MyModel')->value('{field to grab filter value from}')
Это дополнение добавляет ссылку на фильтр в каждую ячейку. Вы можете опустить указание модели (model()
) если фильтр принадлежит текущей модели.
Пример:
Column::string('category.title')->label('Category')->append(
Column::filter('category_id')
)
Дополнение Url
Column::url('{field to grab url from}')
Это дополнение добавляет ссылку в каждую ячейку. Ссылка будет извлечена из указанного поля модели.
Пример:
Column::string('url', 'Url')->append(
Column::url('full_url')
)
String
Содержимое ячейки будет простым значением поля из вашей модели или одной из связанных моделей.
Column::string('{field name}')
Название поля
Название поля может быть одним из следующих:
-
Название поля из вашей модели (из базы данных или используемых при помощи мутаторов).
Column::string('title') Column::string('url')
-
Название поля из связанных моделей
Column::string('category.title') // category() creates belongs-to relation Column::string('city.state.title') // you can use nested relations
Lists
Содержимое ячейки будет список связанных моделей. Используется для связей many-to-many
.
Column::lists('categories.title')
Отображает список всех заголовков категорий, связанных с текущей записью.
categories()
должен определять связь belongs-to-many
в данном случае.
Count
Содержимое ячейки будет количество связанных записей. Используется со связями has-many
.
Column::count('images')
Column::count('images')->append(
Column::filter('school_id')->model('App\SchoolImage')
)
images()
должен определять связь has-many
в данном случае.
Image
Содержимым ячейки будет миниатюра изображения.
Column::image('photo')
Поле photo
должно содержать полный урл изображения либо путь относительно public директории.
Столбцы с изображениями не могут быть сортируемыми.
Datetime
Содержимым ячейки будет дата или время.
Column::datetime('{field}')
Формат даты и времени
Формат по умолчанию определен в конфиге параметром datetimeFormat
. Вы можете переопределить его при помощи метода format($format)
.
Column::datetime('created_at')->format('d.m.Y H:i:s')
Column::datetime('created_at')->format('m/d/Y g:i')
Order
Содержимым ячейки будут стрелки вверх и вниз для сортировки моделей.
Column::order()
Ваша модель должна подключать трэйт use SleepingOwl\Admin\Traits\OrderableModel;
для использования данного столбца. Ваша модель должна содержать целочисленное поле, представляющее собой порядок записей. Создайте метод getOrderField()
в вашей модели, который возвращает название этого поля:
public function getOrderField()
{
return 'order';
}
Пример модели
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
use SleepingOwl\Admin\Traits\OrderableModel;
public function getOrderField()
{
return 'order';
}
}
Action
Содержимым ячейки будет кнопка с произвольным действием.
Column::action('{name}')
Стиль кнопки
Вы можете указать класс иконки для использования (из FontAwesome):
Column::action('show')->icon('fa-globe')
Доступно 2 стиля: short
и long
# Это создаст кнопку без надписи, только иконка. Заголовок будет всплывать при наведении.
Column::action('show')->label('Label')->icon('fa-globe')->style('short')
# Это создаст кнопку с иконкой и заголовком.
Column::action('show')->label('Label')->icon('fa-globe')->style('long')
Важно: стиль по умолчанию — long
без иконки.
Target кнопки
Вы можете указать target для кнопки:
Column::action('show')->label('Column Label')->value('Button Text')->url('http://test.com/:id')->target('_blank')
URL кнопки
Вы можете указать url для кнопки, :id
будет заменен на id строки, в которой расположена кнопка:
Column::action('show')->label('Label')->url('http://test.com/:id')
или вы можете указать функцию для генерация url`а:
Column::action('show')->label('Label')->url(function ($instance)
{
return URL::route('my-route', [$instance->id]);
})
Произвольное действие
Используйте метод ->callback()
для задания произвольного действия:
Column::action('show')->label('Label')->callback(function ($instance)
{
# Any code you want
})
Checkbox
Столбец checkbox используется для осуществления массовых действий.
Column::checkbox()
Подробнее смотрите раздел массовые операции.
Custom
Этот столбец использует ваше замыкание для поления значения ячейки.
Column::custom()->label('Published')->callback(function ($instance)
{
return $instance->published ? '✓' : '-';
}),