Поиск по checkbox Yii2?

Здравствуйте, у меня есть форма с чекбоксы и инпутом и Модель
Форма
<form class="search-block clearfix" id="filter" method="get">
      <fieldset class="search-column">
        <legend>Инфраструктура:</legend>
        <ul class="type-checkbox">
          <li>
            <input type="checkbox" name="swimmingpool" id="swimmingpool-field" checked>
            <label for="swimmingpool-field">Бассейн</label>
          </li>
          <li>
            <input type="checkbox" name="parking" id="parking-field">
            <label for="parking-field">Парковка</label>
          </li>
          <li class="type-checkbox">
            <input type="checkbox" name="wifi" id="wifi-field">
            <label for="wifi-field">Wi-fi</label>
          </li>
        </ul>
      </fieldset>
      <fieldset class="search-column">
        <legend>Тип жилья:</legend>
        <ul class="type-checkbox">
          <li>
            <input type="checkbox" name="hotel" id="hotel-field" checked>
            <label for="hotel-field">Гостиница</label>
          </li>
          <li>
            <input type="checkbox" name="motel" id="motel-field" checked>
            <label for="motel-field">Мотель</label>
          </li>
          <li>
            <input type="checkbox" name="apart" id="apart-field" checked>
            <label for="apart-field">Аппартаменты</label>
          </li>
        </ul>
      </fieldset>
      <div class="search-column-range">
        <div class="range-title">Стоимость в сутки(Р):</div>
        <div class="price-filter">
          <div class="min-price">
            <input type="text" name="start-price" id="start-price-field">
            <label for="start-price-field">от 0</label>
          </div>
          <div class="max-price">
            <input type="text" name="final-price" id="final-price-field">
            <label for="final-price-field">до 3000</label>
          </div>
        </div>
        <button class="show-hotels" type="submit">Показать</button>
      </div>
    </form>

Модель
<?php

namespace app\models;

use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use app\models\Article;

/**
 * ArticleSearch represents the model behind the search form about `app\models\Article`.
 */
class HotelSearch extends Article
{
    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['id', 'user_id'], 'integer'],
            [['hotelname', 'type', 'min_price', 'image'], 'safe'],
        ];
    }

    /**
     * @inheritdoc
     */
    public function scenarios()
    {
        // bypass scenarios() implementation in the parent class
        return Model::scenarios();
    }

    /**
     * Creates data provider instance with search query applied
     *
     * @param array $params
     *
     * @return ActiveDataProvider
     */
    public function search($params)
    {
        // $query = Article::find()->where([
        //   'type' => $this->type,
        //   'swimmingpool' => $this->swimmingpool,
        //   'parking' => $this->parking,
        //   'wifi' => $this->wifi,
        // ]);

        $query = Article::find();

        // add conditions that should always apply here

        $dataProvider = new ActiveDataProvider([
          'query' => $query,
            'pagination' => [
                'pageSize' => 5,
            ],
        ]);

        $this->load($params);

        if (!$this->validate()) {
            // uncomment the following line if you do not want to return any records when validation fails
            // $query->where('0=1');
            return $dataProvider;
        }

        // grid filtering conditions
        $query->andFilterWhere([
            'id' => $this->id,
            'user_id' => $this->user_id,
        ]);

        $query->andFilterWhere(['like', 'hotelname', $this->hotelname])
            ->andFilterWhere(['like', 'type', $this->type])
            ->andFilterWhere(['like', 'min_price', $this->min_price])
            ->andFilterWhere(['like', 'image', $this->image])
            ->andFilterWhere(['like', 'swimmingpool', $this->swimmingpool])
            ->andFilterWhere(['like', 'parking', $this->parking])
            ->andFilterWhere(['like', 'wifi', $this->wifi]);

        return $dataProvider;
    }
}


Подскажите пожалуйста, как сделать запрос, чтобы при выборе нужных параметров в чекбоксе и инпуте и нажатии кнопки "Показать" выводился список из бд?
или одного запроса недостаточно?
  • Вопрос задан
  • 355 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Все что происходит в браузере - это jquery или чистый js. Yii2 (серверная часть) тут не при чем. ловите клик, отправляете ajax, в ответ отдаете сервером список который необходимо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы