Yii2过滤网格视图,带有多个$ _GET参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yii2过滤网格视图,带有多个$ _GET参数相关的知识,希望对你有一定的参考价值。

我正在尝试创建一个超链接(存储在mysql Innodb表中),以便打开应用了多个过滤器的gridview。有一个过滤器(所以有一个$ _GET参数)它正在工作:

.../index?Search%5Bfilter1%5D=something%25

$filter1 = ArrayHelper::getValue(Yii::$app->request->getQueryParams(), 'Search.filter1'));

但是我想再添加一个这样的:

.../index?Search%5Bfilter1%5D=something%25&Search%5Bfilter2%5D=something%25
...
$filter2 = ArrayHelper::getValue(Yii::$app->request->getQueryParams(), 'Search.filter2'));

字符串something%25?Search%5Bfilter2%5D=something%25进入filter1,当然没有找到记录。

我以为我可以简单地从标题栏复制路线/地址,它应该可以工作。

public function actionIndex() {
    $searchModel = new Search;
    $dataProvider = $searchModel->search($_GET);

    Tabs::clearLocalStorage();

    Url::remember();
    \Yii::$app->session['__crudReturnUrl'] = null;

    return $this->render('index', [
                'dataProvider' => $dataProvider,
                'searchModel' => $searchModel,
    ]);
}

更新:我注意到存储在数据库中的&在工具提示中显示为?,如果我用鼠标移动它。当然它试图打开与?的链接。我不确定它是否与问题有关,因为我试图将它改为%26&,但没有区别。

你能指点我正确的方向吗?谢谢!

更新:我认为这与to this one有关。

答案

尝试将getQueryParams()代替$ _GET传递给您的搜索模型

$dataProvider = $searchModel->search(Yii::$app->request->getQueryParams());

以上是关于Yii2过滤网格视图,带有多个$ _GET参数的主要内容,如果未能解决你的问题,请参考以下文章

Yii2- Select2 按钮作为网格视图过滤器不过滤

Yii2 gridview过滤来自多个值的列表(不是下拉列表过滤器)

带有搜索过滤器的 Flutter 应用网格视图?

如何将原始 SQL 转换为 Yii2,如查找查询

Yii2 GridView 按年份过滤日期

[YII2] 视图层过滤客户恶意代码