Как выполнить фильтрацию с помощью выпадающего списка Multi Select в Yii2 GridView
Здесь я хотел бы ясно объяснить свою проблему,
Пытаюсь выполнить выпадающий фильтр multi select, перед этим фильтром multiselect у меня есть базовый фильтр.
Я использую выпадающее расширение kartik-v
Искать.php
<?php
$status = ArrayHelper::map(Status::find()->all(),'id','status');
echo $form->field($model, 'status')->widget(Select2::classname(), [
'data' => $status,
'language' => 'en',
'options' => [
'placeholder' => 'Select Status..',
'multiple' => true
],
'pluginOptions' => [
'allowClear' => true
],
]);
?>
ClaimsSearch.php
$query->andFilterWhere([
'status' => $this->status
]);
Если я попробую выше код получаю ошибку, как показано ниже
Array to string conversion
Но здесь я не знаю, как писать код фильтра.
3 ответов:
Попробуйте удалить 'status' из правил EmployeeSearch. Вы не можете фильтровать такое поле автоматически. Или вы должны настроить пользовательское значение фильтра для столбца состояния, как это (вы можете копать в этом направлении):
Как я могу использовать простой выпадающий список в окне поиска GridView:: widget, Yii2? Попробуйте эту ссылку
Вы не вызываете модель в этом виджете. Вы shoudl использовать так:
echo $form->field($mySearchModel, 'state_10')->widget(Select2::classname(), [ 'data' => $status, 'options' => [ 'placeholder' => 'Select Status ...', 'multiple' => true ], ]);И ваш select, вероятно, возвращает массив. Итак, ваш поиск будет выглядеть примерно так:
$query->andFilterWhere([ 'status' => ('in', 'status', $this->status) ]);Смотрите больше примеров запросов здесь.
Если это решение не сработает, я попрошу вас сделать
var_dump($yourModel->status)в вашем представлении, просто чтобы проверить, что возвращается.
$this - > status is array?
Итак, вы можете использовать
<?php $status = ArrayHelper::map(Status::::model()->findAllByAttributes(array("id"=>$status));(),'id','status'); echo $form->field($model, 'status')->widget(Select2::classname(), [ 'data' => $status, 'language' => 'en', 'options' => [ 'placeholder' => 'Select Status..', 'multiple' => true ], 'pluginOptions' => [ 'allowClear' => true ], ]); ?>

Comments