Как выполнить фильтр с помощью Multi Select Dropdown в Yii2 GridView
Здесь мне нравится ясно объяснять свою проблему,
Я пытаюсь выполнить мультивыборный фильтр выпадающего списка, перед этим фильтром мультиселектора у меня есть базовый фильтр.
Используем расширение выпадающего списка kartik-v
search.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
но здесь я не знаю, как писать код фильтра.
обновить searchview:
![моментальный снимок просмотра]()
Ответы
Ответ 1
Попробуйте удалить статус из правил EmployeeSearch.
Вы не можете фильтровать такой автоматический путь поля.
Или вы должны настроить значение настраиваемого фильтра для столбца состояния, например (вы можете выкопать в этом направлении):
Как я могу использовать простой раскрывающийся список в окне поиска GridView:: widget, Yii2? Попробуйте эту ссылку
Ответ 2
Вы не вызываете модель в этом виджете. Вы так же используете:
echo $form->field($mySearchModel, 'state_10')->widget(Select2::classname(), [
'data' => $status,
'options' => [
'placeholder' => 'Select Status ...',
'multiple' => true
],
]);
И ваш выбор, вероятно, возвращает массив. Таким образом, ваш поиск будет выглядеть примерно так:
$query->andFilterWhere([
'status' => ('in', 'status', $this->status)
]);
Подробнее примеры запросов here.
Если это решение не работает, я буду предлагать вам сделать var_dump($yourModel->status)
в вашем представлении, просто чтобы проверить, что возвращается.
Ответ 3
$this- > status - массив?
Итак, вы можете использовать
<?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
],
]);
?>