Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 16.05.2018 01:02:46

Помогите написать код более красиво ну или правильнее

Есть админка в ней есть вывод товаров, листинг с пагинацией, продукт имеет два варианта: активный и не активный.
В листинге есть настройки вывода:
1. Показать активные
2. Показать не активные
3. Кол-во товаров на страницу (пагинация)
http://take.ms/xSHdo - скришот настроеек у админа
-------------------------
Я конечно написал smile
Сначала у меня срабатывает посредник, который ловит куки админа, типа если есть в куках
отметены:
https://paste.laravel.io/433efded-4cdc- … 284a512d65
После я уже разбираю все через конфиг:
https://paste.laravel.io/ff9a90ba-4d6c- … 18176bc51f

Ну и на отображение.
Но мне кажется можно сделать это как то по другому в плане умнее что ли или логичнее.
Покритикуйте пожалуйста, только конструктивно с предложением.
Сразу скажу ответ на вопрос, зачем $options_admin['options_admin']['good_list'] - затем что посредник будет использовать еще и для других листингов в админке.

Спасибо за ранее, что потратили время!

Не в сети

#2 16.05.2018 10:33:45

TrueKanonir
Откуда: Ташкент
Сообщений: 194

Re: Помогите написать код более красиво ну или правильнее

У меня стояла задача перенести магазин с престашоп, на ларавел.
В престашоп все (листинги, категории, атрибуты, все что отображается списком в таблице — фильтруется), и эти фильтры запоминаются. Я реализовал это через сессии. Ключем в сессии было название таблици модели, которая фильтруется

PHP
// Product model
public function getPaginated()
{
    return 
$this->filterable()->paginate($this->table self::PER_PAGE); // const PER_PAGE = '.per_page';
}

filterable — scope в котором я беру сохраненные фильтры из сессии для конкретной модели, и фильтрую модель по сохраненным в сессии фильтрам. Таким образом, если менеджер (или кто то еще) использовал фильтер ’показать только активные товары’, и потом пошел гулять по другим страницам в админке, а через n-ное кол-стао времени опять зашел в список товаров, фильтры которые он применял ранее сохранились, и отобрпзились только активные товары.


Black / Thrash / MDM / Old-School Death...

Не в сети

#3 16.05.2018 12:57:40

Re: Помогите написать код более красиво ну или правильнее

я таки думаю, что все таки должен какой то быть инструмент нормальный, нельзя описывать каждую опцию в контролере и в посреднике и тд. Оно должно ка кто целостно идти одним блоком, это просто чувство такое smile, ну какой то отдельный класс который умеет работать с фильтрами

Не в сети

#4 16.05.2018 23:14:57

TrueKanonir
Откуда: Ташкент
Сообщений: 194

Re: Помогите написать код более красиво ну или правильнее

У меня этот скоуп находится в трейте, а в самом скоупе ресолвлю сервис в котором описан код для динамической фильтрации (типо как Джефри показывал) ток немного под себя модифицировал.
Подключил трейт к нкжной модели, и все.


Black / Thrash / MDM / Old-School Death...

Не в сети

Подвал раздела