Download the PHP package alvariumsoft/laravel-filters without Composer
On this page you can find all versions of the php package alvariumsoft/laravel-filters. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download alvariumsoft/laravel-filters
More information about alvariumsoft/laravel-filters
Files in alvariumsoft/laravel-filters
Informations about the package laravel-filters
laravel-filters
Пакет для работы с фильтрами в Laravel-6
- Фильтры для магазинов и каталогов.
- ЧПУ и GET параметры.
- Кеширование.
- Работают с дефолтными настройками.
- Набор примеров, которые можно переделать под частные задачи.
Установка
Установка пакета с помощью Composer.
Добавьте в файл config/app.php
вашего проекта в конец массива providers
:
После этого выполните в консоли команду публикации нужных ресурсов:
Использование
В файле config\filters.php
находится массив, в котором нужно указать классы сервисов. Например:
Классы для своих сервисов нужно создавать в папке app\Alvarium
.
Класс сервиса должен иметь соответствующее пространство имен: namespace App\Alvarium\Filters\Services\Data
. Так же класс сервиса должен включать соответствующий интерфейс и реализовывать его методы.
Примеры
В публикуемых папках Defaults (App\Alvarium\Filters\Services\Data\Defaults) есть примеры всех сервисов по умолчанию. Для большинства случаев их будет достаточно. Если же нужно изменить или дополнить функциональность, создаем по примерам свои сервисы и подключаем их в файле конфигурации.
Принцип работы
Допустим мы имеем следующие таблицы и соответствующие им модели (приведены основные поля):
Свойства в таблице products должны храниться в поле properties (json) в таком виде:
Где значения - это slug property_enums. Если у вас поля или таблицы сходны по структуре, но называются иначе, вы можете их просто переименовать в сервисе \App\Alvarium\Filters\Services\Data\Defaults\DefaultState::class
.
У нас есть маршрут фильтров для подкатегорий:
Т.е. два первых параметра фильтров уйдут в сегменты, о стальные в GET параметры.
У нас есть action контроллера:
Сервисы
В папку app\Alvarium
публикуется структура папок сервисов и все сервисы по умолчанию, которые подойдут для большинства случаев. Вы можете по образу создать свои сервисы и переподключить их в файле config\filters.php
.
Сервис для запросов к базе и получения всех необработанных данных из базы. Реализован синглтон, чтобы не было повторных запросов и был доступ в любых других сервисах. Рекомендуется все запросы к базе выполнять только здесь, а потом обрабатывать их сервисами.
Сервис для обработки полученных данных из базы, вытягивания и группирования фильтров. Это самый трудоемкий участок, поэтому его результаты кешируются. Кеши нужно бужет сбрасывать при обновлении данных в базе самостоятельно. Время кеша определяется в файле конфигурации.
Сервис для генерации классов фильтров, классы также необходимо создать. Класссы фильтров отвечают за формирование конечных данных из сырых дфнных. Сервис отвечает за определение того объекты, какого класса создавать.
Сервис формирующий результирующий массив, здесь можно изменить его структуру. Массив формируется с помощью классов, описанных в предыдущем сервисе.
Сервис для генерации ссылок.
В этом разделе файла конфигурации указываем классы middleware, которые выполнятся по порядку и произведут дополнительные операции над сформированными фильтрами. Они все должны реализовывать интерфейс Alvarium\Filters\Middlewares\Middleware
. По умолчанию реализована сортировка фильтров.
Сервис, который разбирает входящие параметры, также здесь можно определить какие будут в сегментах, какие в GET-параметрах.
Сервис, который декорирует все запросы по выбранным фильтрам, чтобы отфильтровать продукты. Также в этом неймспейсе определяем сами запросы.