Подтвердить что ты не робот

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

4b9b3361

Ответ 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
                            ],
                    ]);
?>