Php 如何在Yi2 GridView中使用多选下拉菜单执行筛选

Php 如何在Yi2 GridView中使用多选下拉菜单执行筛选,php,yii2,dropdown,Php,Yii2,Dropdown,这里我想把我的问题解释清楚 我试图执行多选下拉过滤器,在此多选过滤器之前,我有一个基本的过滤器 Am使用kartik-v下拉扩展 search.php <?php $status = ArrayHelper::map(Status::find()->all(),'id','status'); echo $form->field($model, 'status')->widget(Select2::classname(), [

这里我想把我的问题解释清楚

我试图执行多选下拉过滤器,在此多选过滤器之前,我有一个基本的过滤器

Am使用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
                            ],
                    ]);
?>
$query->andFilterWhere([
            'status' => $this->status
        ]);
如果我尝试上面的代码,我会得到如下错误

Array to string conversion
但在这里,我不知道如何编写过滤代码

更新searchview:
您没有在该小部件中调用模型。你应该这样使用:

echo $form->field($mySearchModel, 'state_10')->widget(Select2::classname(), [
    'data' => $status,
    'options' => [
        'placeholder' => 'Select Status ...',
        'multiple' => true
    ],
]);
你的选择可能会返回一个数组。因此,您的搜索将类似于:

$query->andFilterWhere([
    'status' => ('in', 'status', $this->status)
]);
请参阅更多查询示例


如果该解决方案不起作用,我建议您在视图中执行
var\u转储($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
                            ],
                    ]);
?>

尝试从员工搜索规则中删除“状态”。 您不能自动过滤此类字段。 或者您必须为状态列设置自定义筛选值,如下所示(您可以深入了解此方向):


尝试此链接

am GET error,同时它没有在gridview(索引页)中显示任何数据。您可以使用您的搜索视图和modelsearch更新您的问题吗?$this->status来自何处?请参见上文的search.php