Url Yii2 GridView排序中断了多选筛选器,排序后无法取消选择
我有一个Yi2 gridview列,它带有一个多选过滤器,位于一个具有多个关系的列表上: 在搜索模型中:Url Yii2 GridView排序中断了多选筛选器,排序后无法取消选择,url,gridview,yii2,multi-select,Url,Gridview,Yii2,Multi Select,我有一个Yi2 gridview列,它带有一个多选过滤器,位于一个具有多个关系的列表上: 在搜索模型中: $dataProvider->sort->attributes['programSelect'] = [ 'asc' => ['programs.name' => SORT_ASC], 'desc' => ['programs.name' => SORT_DESC], ]; 视图中的列: $columns[]=[ 'format' =&g
$dataProvider->sort->attributes['programSelect'] = [
'asc' => ['programs.name' => SORT_ASC],
'desc' => ['programs.name' => SORT_DESC],
];
视图中的列:
$columns[]=[
'format' => 'raw',
'attribute' => 'programSelect',
'value' => function ($data) {return '...'},
'headerOptions' => [
'style' => 'width:100px',
'data-header-attrib'=>'programs',
],
'filter' => Html::activeDropDownList($searchModel, 'programSelect', $myPrograms,
[
'class' => 'form-control multiselect-filter',
'id' =>'programs-filter',
'multiple' => true,
]),
]
在第一次排序之前,栅格视图工作正常。分拣机生成的链接包含以下重复元素
在第一次网格加载时,lsorting ink的url为:
http://myurl?ModelSearch[programSelect]=&ModelSearch[programSelect][]=2&ModelSearch[programSelect][]=26
请注意多选择参数的[],数组url参数应使用[]
单击排序链接后,url参数获取数组索引,如下所示:
http://myurl?ModelSearch[programSelect][0]=2&ModelSearch[programSelect][1]=26&sort=programSelect
这会中断“多选”,我无法再更改过滤器中的“多选”选项
有谁知道解决这个问题的最佳方法吗
谢谢最后我用一点javascript破解了这个问题:
$('.grid-pjax').on('pjax:complete', function(event, xhr, options) {
// yii UrlManager does not handle array values properly for urls
// it adds array keys into the url when parsing- changes param[]=x to param[0]=x
// this breaks GridView filtering after clicking a grid column sort header link
// process the sort header links to remove such array indexes
//////////////////////////////////////////////////////////////////////////
var re = /%5D%5B\d+%5D/gi;
$(myGridSelector+' th>a').each(function(i){
var badUrl=$(this).attr('href');
$(this).attr('href',badUrl.replace(re, '%5D%5B%5D'))
//console.log('href is now:');
//console.log($(this).attr('href'));
})
})