2016-07-08 3 views
0

У меня есть раскрывающийся список, который отображает данные из модели, но когда я их выбираю, он не фильтрует данные соответствующим образом.Фильтровать глобально с помощью выпадающего списка yii2

<?php $items = ArrayHelper::map(app\models\Facility::find()->all(),'facility_id' ,'facility_country');?> 

    <?= $form->field($model, 'facility_country')->dropDownList($items)->label(false); ?> 

Вышеупомянутого является выпадающим списком в поисках form.In модели filterSearch Я использовал мой запрос, как нижеуказанный код.

$query->orFilterWhere(['like', 'facility_name', $this->facility_name]) 
     ->orFilterWhere(['like', 'facility_country', $this->facility_country]); 

Могу ли я узнать, в чем проблема? Спасибо!!

+0

Можете ли вы объяснить это немного лучше. –

+0

поделитесь своими правилами с моделью –

+1

, вы передали 'facility_id' как значение в раскрывающемся списке и искали' facility_country' в поисковой модели, нет совпадения. или это FK. если нет, то arrayhelper должен быть 'ArrayHelper :: map (app \ models \ Facility :: find() -> all(), 'facility_country', 'facility_country');' –

ответ

0

Решение было действительно простым. Проблема заключалась в том, что он не представлял форму, которая просто ничего не делала. Я не просто отправил форму только что добавленную событие обмена, как код ниже.

<?php $items = ArrayHelper::map(app\models\Facility::find()->all(),'facility_country' ,'facility_country');?> 
    <?= $form->field($model, 'facility_country')->dropDownList($items,['class'=> 'col-sm-2 col-lg-2 col-xs-7 pull-left', 'style'=> 'height:34px;','onchange' => 'this.form.submit()'])->label(false);?> 

Спасибо, ребята за вашу помощь ..

1

Значение вашей $items переменных исходящее от \app\models\Facility класса, в массиве в следующем формате:

[ 
    'facility_id' => 'facility_country', 
    ... 
] 

При использовании этого массива с dropDownList(), вы говорите, вы отправляете ключ «facility_id 'к вашей форме.

Таким образом, в вашей модели поиска, вам нужно искать по идентификатору, что-то вроде:

->orFilterWhere(['like', 'facility_id', $this->facility_country]); 

ИЛИ Вы также можете сделать свой поиск по имени (я предполагаю, что это то, что вы хотите):

$items = ArrayHelper::map(app\models\Facility::find()->all(),'facility_country' ,'facility_country'); 
+0

Я замечаю, что он просто проверяет выпадающий список, когда я проверяю элемент. Я не понимаю, в чем проблема. –

Смежные вопросы