Php 如何在Yi2 GridView中使用多选下拉菜单执行筛选
这里我想把我的问题解释清楚 我试图执行多选下拉过滤器,在此多选过滤器之前,我有一个基本的过滤器 Am使用kartik-v下拉扩展 search.phpPhp 如何在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(), [
<?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