Как выполнить фильтрацию с помощью выпадающего списка 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


Но здесь я не знаю, как писать код фильтра.

Обновить searchview:
поиск просмотр моментального снимка

817   3  

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

    Ничего не найдено.