是否有任何解决方案可以保存过滤器(在会话中),以便用户可以看到"最后使用的过滤器"当他回来的时候?
请在手册或文档或您的代码中进行链接。我没有发现任何搜索这个问题。
答案 0 :(得分:3)
这有点像黑客,但这会为我保存过滤器,页面和排序。
假设您的模型名为客户:
,请将其放入您的控制器中 $searchModel = new CustomerSearch();
$params = Yii::$app->request->queryParams;
if (count($params) <= 1) {
$params = Yii::$app->session['customerparams'];
if(isset(Yii::$app->session['customerparams']['page']))
$_GET['page'] = Yii::$app->session['customerparams']['page'];
} else {
Yii::$app->session['customerparams'] = $params;
}
$dataProvider = $searchModel->search($params);
答案 1 :(得分:2)
在模型搜索类中,在搜索功能的开头添加以下代码:
if (!isset($params["MyModelSearch"])) {
if (isset(Yii::$app->session["mymodelsearch"])){
$params["MyModelSearch"]=Yii::$app->session["mymodelsearch"];
}
}
else{
Yii::$app->session["mymodelsearch"]=$params["MyModelSearch"];
}
答案 2 :(得分:2)
在模型搜索类中,在搜索功能的开头添加以下代码:
if (!isset($params["MyModelSearch"])) {
if (isset(Yii::$app->session["mymodelsearch"])){
$params["MyModelSearch"]=Yii::$app->session["mymodelsearch"];
}
}
else{
Yii::$app->session["mymodelsearch"]=$params["MyModelSearch"];
}
您好, 谢谢你的解决方案。它适用于值过滤器,但不适用于排序过滤器。我们如何解决这个问题?
答案 3 :(得分:0)
我无法对Herbert Maschke代码发表评论,我实现了它并且运行良好但后来我发现如果我选择了我的gridview选项,如Edit然后又回去了,过滤器也保留了它们的值和分页但是在下一个点击其他页码,过滤器丢失。我做了一项对我有用的改进。
$searchModel = new CustomerSearch();
$params = Yii::$app->request->queryParams;
if (count($params) <= 1) {
$params = Yii::$app->session['customerparams'];
if(isset(Yii::$app->session['customerparams']['page'])) <<------
$_GET['page'] = Yii::$app->session['customerparams']['page']; <<------
} else {
Yii::$app->session['customerparams'] = $params;
}
$dataProvider = $searchModel->search($params);
似乎只有页面参数被恢复到$_GET
(后来$_GET
被用于分页并丢失了所有过滤器)所以我更改了这两行:
if(isset(Yii::$app->session['customerparams'])) {
$_GET = Yii::$app->session['customerparams'];
答案 4 :(得分:0)
我进行了更改以更正页面更改
$searchModel = new MyModelSearch();
$params = Yii::$app->request->queryParams;
if(count($params) <= 1){
//si es menor o igual a uno osea no ha realizado busqueda alguna
if(isset(Yii::$app->session['MyModelSearch'])) {
$params = Yii::$app->session['MyModelSearch'];
}else{
Yii::$app->session['MyModelSearch'] = $params;
}
}else{
if(isset(Yii::$app->request->queryParams['MyModelSearch'])){
Yii::$app->session['MyModelSearch'] = $params;
}else{
$params = Yii::$app->session['MyModelSearch'];
}
}
$dataProvider = $searchModel->search($params);