如何在 Yii2 GridView 中使用 Multi Select Dropdown 执行 Filter
How to perform Filter using Multi Select Dropdown in Yii2 GridView
在这里我想把我的问题解释清楚,
我正在尝试执行多 select 下拉过滤器,在此多select 过滤器之前我有一个基本过滤器。
我正在使用 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
但是这里不知道怎么写过滤代码
更新搜索视图:
您没有在该小部件中调用模型。你应该这样使用:
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)
]);
查看更多查询示例 here。
如果该解决方案不起作用,我会建议您在您看来做一个 var_dump($yourModel->status)
,只是为了检查返回的内容。
$this->状态是数组?
因此,您可以使用
<?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
],
]);
?>
尝试从 EmployeeSearch 规则中删除 'status'。
您不能以自动方式过滤此类字段。
或者你必须为状态列设置自定义过滤器值,像这样(你可以深入这个方向):
试试这个 link
在这里我想把我的问题解释清楚,
我正在尝试执行多 select 下拉过滤器,在此多select 过滤器之前我有一个基本过滤器。
我正在使用 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
但是这里不知道怎么写过滤代码
更新搜索视图:
您没有在该小部件中调用模型。你应该这样使用:
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)
]);
查看更多查询示例 here。
如果该解决方案不起作用,我会建议您在您看来做一个 var_dump($yourModel->status)
,只是为了检查返回的内容。
$this->状态是数组?
因此,您可以使用
<?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
],
]);
?>
尝试从 EmployeeSearch 规则中删除 'status'。 您不能以自动方式过滤此类字段。 或者你必须为状态列设置自定义过滤器值,像这样(你可以深入这个方向):