Yii2 простой модуль фильтра с чекбоксами

Выкладываем свои наработки
Ответить
sanex3339
Сообщения: 66
Зарегистрирован: 2014.10.16, 20:30

Yii2 простой модуль фильтра с чекбоксами

Сообщение sanex3339 » 2015.03.03, 23:46

В целях изучения yii2 сделал для себя модуль - фильтр с чекбоксами, вот такой:
http://www.youtube.com/watch?v=Vah2j5WzXIs

Основной функционал я закончил, баги, которые нашёл - пофиксил, посему выложу сюда - может кому пригодится.
https://github.com/sanex3339/Yii2-Check ... ter-Module
В README.ru.md инструкция (и видео) по установке и использованию.

Так же, не откажусь от помощи - английский README.MD у меня переведен гугл транслейтом, может быть кто-то сможет поправить ошибки в файле?

sanex3339
Сообщения: 66
Зарегистрирован: 2014.10.16, 20:30

Re: Yii2 простой модуль фильтра с чекбоксами

Сообщение sanex3339 » 2015.03.10, 02:05

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

Все ещё нуждаюсь в помощи в переводе английского readme.md!


sanex3339
Сообщения: 66
Зарегистрирован: 2014.10.16, 20:30

Re: Yii2 простой модуль фильтра с чекбоксами

Сообщение sanex3339 » 2015.03.10, 11:34

без него идет ошибка:

Код: Выделить всё

`Call to a member function setParams() on null` 
при попытке вызове метода модуля

Код: Выделить всё

$filter = SimpleFilter::getInstance();
$filter->setParams(); 
Я это сделал так, после вчерашней темы http://www.yiiframework.ru/forum/viewto ... 19&t=22760
Я так понимаю, в бутстрап файле, сначала устанавливается модуль через setModule, потом подключается 1 раз через getModule, а через getInstance вызываются инстансы модуля.

nzxyelrt
Сообщения: 16
Зарегистрирован: 2014.11.18, 18:49

Re: Yii2 простой модуль фильтра с чекбоксами

Сообщение nzxyelrt » 2015.03.16, 03:19

Хорошая штука. Подробное описание и даже видео.

ЗЫ Выкладывай еще и код того приложения с видео. Чего уж

sanex3339
Сообщения: 66
Зарегистрирован: 2014.10.16, 20:30

Re: Yii2 простой модуль фильтра с чекбоксами

Сообщение sanex3339 » 2015.03.16, 13:03

Кстати да, спасибо за совет.
Английский в readme сильно плохой? Понятное дело, что там ошибка на ошибке, но суть понятна?

sanex3339
Сообщения: 66
Зарегистрирован: 2014.10.16, 20:30

Re: Yii2 простой модуль фильтра с чекбоксами

Сообщение sanex3339 » 2015.03.18, 01:47

Добавил возможность возвращать кешированные данные и для dataProvider'а и для обычной query.
Duration пока фиксированный - 600 секунд, потом сделаю возможность самому задавать длительность.

kozerog91
Сообщения: 5
Зарегистрирован: 2015.02.22, 00:23

Re: Yii2 простой модуль фильтра с чекбоксами

Сообщение kozerog91 » 2015.03.21, 21:36

Здравствуйте,
Меня интересует один вопрос по setFilter. Есть ли возможность нескольких отборов значений из одного и того же поля.

Пример, у меня есть таблица с полями product_id и property_value_id. Вашим модулем идет отбор по полю property_value_id.
Код:

Код: Выделить всё

<? foreach($propertyGroup as $group) 
{
    $values = PropertyValue::find()->where(['property_id' => $group->id])->all();
    $valueArray = ArrayHelper::map($values, 'id', 'id');
   
    $arr[$group->id] = 
    [
        'property' => 'property_value_id',
        'caption' => $group->title,
        'values' => $valueArray,
        'class' => 'vertical',
    ];
} ?>

<?= $filter->setFilter($arr) ?>
Получилось вывести все группы категорий, но Аякс отбор происходит только при использовании последней группы чекбоксов. Все предыдущие забиваются в Url, но выводятся только после обновления страницы. Т.е. аякс не срабатывает.

Подскажите, пожалуйста, как мне можно решить эту проблему?

sanex3339
Сообщения: 66
Зарегистрирован: 2014.10.16, 20:30

Re: Yii2 простой модуль фильтра с чекбоксами

Сообщение sanex3339 » 2015.03.21, 23:46

Нескольких групп чекбоксов с одинаковым `property` быть не может. Ща поковыряюсь в коде, мб что придумаю.

kozerog91
Сообщения: 5
Зарегистрирован: 2015.02.22, 00:23

Re: Yii2 простой модуль фильтра с чекбоксами

Сообщение kozerog91 » 2015.03.22, 00:32

Буду с нетерпением ждать результат...)

Спасибо

sanex3339
Сообщения: 66
Зарегистрирован: 2014.10.16, 20:30

Re: Yii2 простой модуль фильтра с чекбоксами

Сообщение sanex3339 » 2015.03.22, 02:46

UPD: разумеется вылез баг, завтра посмотрю че к чему, пока не обновляйтесь.
Последний раз редактировалось sanex3339 2015.03.22, 14:17, всего редактировалось 1 раз.

kozerog91
Сообщения: 5
Зарегистрирован: 2015.02.22, 00:23

Re: Yii2 простой модуль фильтра с чекбоксами

Сообщение kozerog91 » 2015.03.22, 11:57

Value все уникальные, по-этому с этим проблем возникнуть не должно.

sanex3339
Сообщения: 66
Зарегистрирован: 2014.10.16, 20:30

Re: Yii2 простой модуль фильтра с чекбоксами

Сообщение sanex3339 » 2015.03.22, 13:55

Апдейтнул версию - проверяйте. Тестировал не очень много, но должно работать.
Один нюанс - если в двух группах с одинаковым property будут два или более чекбокса с одинаковыми value, и если один из них отметить галкой, то после перезагрузки страницы отмечены галкой будут оба чекбокса.

Если не понятно - если в двух группах c property 'color' будут 2 чекбокса с одинаковыми значениями, к примеру, 'red', если мы отметим 1 чекбокс галкой, перезагрузим страницу - отмечены галкой будут оба.
https://github.com/sanex3339/Yii2-Simpl ... /tag/0.8.2

Так, вроде баг починил.

UPD: пофиксил ещё один баг, когда в конфиге Yii2 стоит `showScriptName = false`, то в GET-параметрах ссылок добавлялся один левый параметр. Ссылку обновил.
Последний раз редактировалось sanex3339 2015.03.22, 15:19, всего редактировалось 1 раз.

sanex3339
Сообщения: 66
Зарегистрирован: 2014.10.16, 20:30

Re: Yii2 простой модуль фильтра с чекбоксами

Сообщение sanex3339 » 2015.03.22, 15:19

UPD: пофиксил ещё один баг, когда в конфиге Yii2 стоит `showScriptName = false`, то в GET-параметрах ссылок добавлялся один левый параметр с именем экшена. Ссылку обновил.
https://github.com/sanex3339/Yii2-Simpl ... /tag/0.8.2

sanex3339
Сообщения: 66
Зарегистрирован: 2014.10.16, 20:30

Re: Yii2 простой модуль фильтра с чекбоксами

Сообщение sanex3339 » 2015.04.10, 20:33

Обновил версию
Обратите внимание, параметр 'ajax' сменился на 'useAjax'
Самое главное, в ajax вьюхе данные теперь доступны не в переменной $sanexFilterData, а в $simpleFilterData

Что добавил:
- можно указать длительность кеширования в секундах, задав значение парамтера 'useCache' => 3600, к примеру.
- частичная поддержка ie9. в этом браузере ajax обновление отключено, ie8 не работает, т.к. в yii2 используется jquery 2
- данные в сессии теперь шифрованные
- рефакторинг кода (ещё не закончен)

Ответить