Дополнительный настройки
Сортировка по умолчанию
По умолчанию ресурсы сортируются по id.
Для изменения установить свойства $sortBy и $sortDirection в компоненте.
<?php
namespace App\Http\Livewire\Admin\News;
use WebVovan\RockCms\Http\Livewire\ResourceListComponent;
class NewsList extends ResourceListComponent
{
    // Поле для сортировки
    public string $sortBy = 'title';
    
    // Направление сортировки
    public string $sortDirection = 'acs';
    
    ...
}Количество ресурсов на странице
По умолчанию выводится 10 ресурсов на странице.
Для изменения установите свойство $perPage.
<?php
namespace App\Http\Livewire\Admin\News;
use WebVovan\RockCms\Http\Livewire\ResourceListComponent;
class NewsList extends ResourceListComponent
{
    // Количество ресурсов на странице [5, 10, 15]
    public int $perPage = 10;
    
    ...
}Пользовательские обработчики сортировки
Для настройки собственных обработчиков для сортировки полей используйте метод setSortHandlers().
Это может быть полезно если, к примеру, сайт мультиязычный и все переводы модели хранятся в отдельной таблице (как это реализовано в пакете astrotomic/laravel-translatable). В таком случае не получится просто отсортировать ресурсы по полю title и нужно будет использовать метод сортировки от создателей пакета.
<?php
namespace App\Http\Livewire\Admin\News;
use WebVovan\RockCms\Http\Livewire\ResourceListComponent;
class NewsList extends ResourceListComponent
{
    ...
    
    /**
     * Установка обработчиков для сортировки
     *
     * @return array
     */
    public function setSortHandlers(): array
    {
        return [
            'title' => fn($builder, string $sortBy, string $sortDirection) => $builder->orderByTranslation($sortBy, $sortDirection),
        ];
    }
    ...
}Пользовательские обработчики поиска
Если в свойстве $search указаны поля, которые загружаются через отношения, то для поиска по ним нужно добавить собственные функции в методе setSearchHandlers().
Ниже пример поиска по полю с мультиязычным заголовком (используется пакет astrotomic/laravel-translatable).
<?php
namespace App\Http\Livewire\Admin\News;
use WebVovan\RockCms\Http\Livewire\ResourceListComponent;
class NewsList extends ResourceListComponent
{
    ...
    /**
     * Установка обработчиков для поиска
     *
     * @return array
     */
    public function setSearchHandlers(): array
    {
        return [
            'title' => fn($builder, string $field, string $searchWord) => $builder->whereTranslationLike($field, '%' . $searchWord . '%'),
        ];
    }
}Last updated