Реализация фильтров на Yii2

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Tonni_regoletti
Сообщения: 46
Зарегистрирован: 2019.10.11, 09:16

Реализация фильтров на Yii2

Сообщение Tonni_regoletti »

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

unknownby
Сообщения: 327
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Реализация фильтров на Yii2

Сообщение unknownby »

Смотря какой вариант понравится тебе самому, так и делать.
Можно сделать в верхнем блоке сортировку. Такого плана
Можно сделать такого плана как в большинстве магазинов делают Фильтры
Если сильно не заморачиваться, то просто Обычный поиск

P.S. у меня вот так, только фильтры сразу закрыты Скриншот

Аватара пользователя
Tonni_regoletti
Сообщения: 46
Зарегистрирован: 2019.10.11, 09:16

Re: Реализация фильтров на Yii2

Сообщение Tonni_regoletti »

Спасибо за ответ.
Я не совсем о том, как организовать логику работы.
То есть как это должно выглядеть в беке ?

unknownby
Сообщения: 327
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Реализация фильтров на Yii2

Сообщение unknownby »

Во-1 у тебя идет вывод данных из какой-то основной модели.
Предположим это Product. Создается модель ProductSearch, которая расширяется (extends) основной моделью Products

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

class ProductSearch extends Product
Все твои фильтры должны отдавать параметры GET или POST в модель поиска через контроллер. Как тебе удобней.
В контроллере

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

$searchModel = new ProductsSearch;
$dataProvider = $searchModel->search(\Yii::$app->getRequest()->get());
В модели поиска организованы условия, например:

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

	$query->andFilterWhere([
		'productsextra_id' => $this->productsextra_id,
        ]);

        $query->andFilterWhere(['like', 'products_name', $this->products_name]);

        if('' != $this->products_price_min){
		$query->andFilterWhere(['>=', 'products_price', $this->products_price_min]);
	}

	if('' != $this->products_price_max){
		$query->andFilterWhere(['<=', 'products_price', $this->products_price_max]);
	}
Ну и сама модель поиска возвращает тебе dataProvider
Который приходит в тот же GridView или ListView, чтобы отобразить твои товары.

Ты это спрашивал?

Аватара пользователя
Tonni_regoletti
Сообщения: 46
Зарегистрирован: 2019.10.11, 09:16

Re: Реализация фильтров на Yii2

Сообщение Tonni_regoletti »

Да примерно про это спасибо.

Аватара пользователя
Tonni_regoletti
Сообщения: 46
Зарегистрирован: 2019.10.11, 09:16

Re: Реализация фильтров на Yii2

Сообщение Tonni_regoletti »

А нормально будет если не использовать dataProvider ?
А то он никак не ложится, так как мне нужно

unknownby
Сообщения: 327
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Реализация фильтров на Yii2

Сообщение unknownby »

Tonni_regoletti писал(а):
2020.02.07, 16:54
А нормально будет если не использовать dataProvider ?
А то он никак не ложится, так как мне нужно
А через что ты выводишь данные в представлении?

Аватара пользователя
Tonni_regoletti
Сообщения: 46
Зарегистрирован: 2019.10.11, 09:16

Re: Реализация фильтров на Yii2

Сообщение Tonni_regoletti »

unknownby писал(а):
2020.02.07, 22:51
Tonni_regoletti писал(а):
2020.02.07, 16:54
А нормально будет если не использовать dataProvider ?
А то он никак не ложится, так как мне нужно
А через что ты выводишь данные в представлении?
Получил в контроллере и передела в вид )

unknownby
Сообщения: 327
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Реализация фильтров на Yii2

Сообщение unknownby »

Tonni_regoletti писал(а):
2020.02.10, 10:28
Получил в контроллере и передела в вид )
Так в чем вопрос то? Если сделал как я написал, то проблем не должно быть с отображением информации.
Суть сама в том, как и что ты хочешь делать с данными в представлении. Если интересует просто вывод информации, то можно найти данные в модели и передать их на представление, если нужны фильтры и дополнительные возможности как есть у ListView (например), тогда делаем через dataProvider.

Аватара пользователя
bemulima
Сообщения: 191
Зарегистрирован: 2012.12.20, 09:41
Откуда: Курган

Re: Реализация фильтров на Yii2

Сообщение bemulima »

с помощью gii можете сгенерировать CRUD только надо еще указать путь Search Model Class и тогда у вас вся стандартная логика для фильтра создастся, как @unknownby описал выше.

Аватара пользователя
Tonni_regoletti
Сообщения: 46
Зарегистрирован: 2019.10.11, 09:16

Re: Реализация фильтров на Yii2

Сообщение Tonni_regoletti »

Спасибо за ответы.

Ответить