[英]How to perform Filter using Multi Select Dropdown in 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
但在这里我不知道如何编写过滤器代码。
尝试从EmployeeSearch规则中删除“状态”。 你无法过滤这种现场自动方式。 或者你必须为状态列设置自定义过滤器值,就像这样(你可以深入研究这个方向):
您没有在该窗口小部件中调用模型。 你应该像这样使用:
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_dump($yourModel->status)
,只是为了检查返回的内容。
$ 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
],
]);
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.