我正在尝试创建一个超链接(存储在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());