/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = ChampionshipPart::find(); $championship = new Championship(); $championshipPartTable = ChampionshipPart::tableName(); $championshipTable = Championship::tableName(); $query->joinWith(['championship' => function ($query) use($championshipTable) { $query->from(['championship' => $championshipTable]); }]); $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 10]]); // enable sorting for the related columns $addSortAttributes = ["championship.name"]; foreach ($addSortAttributes as $addSortAttribute) { $dataProvider->sort->attributes[$addSortAttribute] = ['asc' => [$addSortAttribute => SORT_ASC], 'desc' => [$addSortAttribute => SORT_DESC]]; } if (!($this->load($params) && $this->validate())) { return $dataProvider; } $query->andFilterWhere(["{$championshipPartTable}.id" => $this->id]); $query->andFilterWhere(['like', "{$championshipPartTable}.name", $this->name])->andFilterWhere(['like', 'championship.name', $this->getAttribute('championship.name')]); return $dataProvider; }
<div class="col-sm-6"> <?php echo $form->field($model, 'league_id')->widget(Select2::classname(), ['data' => ArrayHelper::map(League::find()->all(), 'id', 'name'), 'language' => 'ru', 'options' => ['placeholder' => 'Выберите лигу...'], 'pluginOptions' => ['allowClear' => true]]); ?> </div> </div> <div class="row"> <div class="col-sm-6"> <?php echo $form->field($model, 'season_id')->widget(Select2::classname(), ['data' => ArrayHelper::map(Season::find()->orderBy(['id' => SORT_DESC])->all(), 'id', 'name'), 'language' => 'ru', 'options' => ['placeholder' => 'Выберите сезон...'], 'pluginOptions' => ['allowClear' => true]]); ?> </div> <div class="col-sm-6"> <?php echo $form->field($model, 'championship_part_id')->widget(Select2::classname(), ['data' => ArrayHelper::map(ChampionshipPart::find()->all(), 'id', 'name'), 'language' => 'ru', 'options' => ['placeholder' => 'Выберите этап турнира...'], 'pluginOptions' => ['allowClear' => true]]); ?> </div> </div> <div class="row"> <div class="col-sm-6"> <?php $availableStadiums = []; if (!$model->isNewRecord) { $stadium = Stadium::findOne($model->stadium_id); if (isset($stadium->id)) { $availableStadiums = [$stadium->id => $stadium->name]; } } echo $form->field($model, 'stadium_id')->widget(SelectizeDropDownList::classname(), ['loadUrl' => Url::to(['stadium/stadium-list']), 'items' => $availableStadiums, 'options' => ['multiple' => false], 'clientOptions' => ['valueField' => 'value', 'labelField' => 'text', 'persist' => false]]);