yii2.0分页的问题,不能很好的支持POST方法? [ 求助交流 ]
如题,使用ActiveDataProvider分页,使用Linker分页。 前端form开始默认使用POST方式,查询显示一切正常
当前端条件查询时,开始显示正常,但是只要一翻页,立马就是默认查询所有(输入条件在点击页面就没有被获取)
查看源代码发现Pagnition和Linker是使用GET方法获取数据,如下: $params = $request instanceof Request ? $request->getQueryParams() : []; 因此,我通过把form的method改成GET方式,是可以解决我的问题的。(gii生成的CURD也是GET方式获取前端数据)
问题: 1.form默认是POST方式,为什么这里POST不能很好的支持呢? 2.使用GET方法可以解决上面的问题,但有一个新的问题,就是在当前页不停的点击比如 【查询】【刷新】按钮,请求串的参数一直在累积(form有几个输入,每次点击,就增加一个完整的输入串),怎么解决呢? 2.我通过继承方式重写了一个Pagniation extends yii\data\Pagniation,希望能支持GET和POST方法,但是没有解决下面问题。 在yii\data\BaseActiveDataProvider中的方法:
public function setPagination($value)
{
if (is_array($value)) {
$config = ['class' => Pagination::className()];//这个Pagination默认是yii\data\Pagniation
}
}
我怎么才能让这个Pagination是使用我自己写的Pagination呢?
共 2 条回复
-
遇到相同问题, 找到解决方法如下:
不管怎样,你需要一种能持久化数据的方式。你可以有以下几种选择:
- GET参数
- SESSION
- COOKIE
- hidden field
我的建议是尽量用GET参数,尤其是这种搜索查询页面。
在action中得到post数据后写入$_GET就行了
像这样$form=new SearchForm; if(isset($_POST['SearchForm'])) { $form->attributes=$_POST['SearchForm']; $_GET['keyword'] = $form->keyword; $_GET['cat_id'] = $form->cat_id; } elseif(isset($_GET['keyword'])) { if(isset($_GET['keyword'])) $form->keyword=$_GET['keyword']; if(isset($_GET['cat_id'])) $form->cat_id=$_GET['cat_id']; } else { 既没post也没get数据的话,设定默认查询条件 } if($form->validate()) { ....处理查询 }
我自己的代码, 范围搜索
if (!empty(Yii::$app->request->post())){ $result_from = Yii::$app->request->post('DemoCollectionSearch')['result_from']; $result_to = Yii::$app->request->post('DemoCollectionSearch')['result_to']; }else{ $result_from = Yii::$app->request->get('result_from'); $result_to = Yii::$app->request->get('result_to'); } $searchModel = new DemoCollectionSearch(); $searchModel->result_from = $result_from; $searchModel->result_to = $result_to; $_GET += array( 'result_from' => $dresult_from, 'result_to' => $result_to, ); // define
共 1 条回复helloWorldTest 回复于 2017-07-26 12:54 回复你好!为什么我在action中把post过来的参数,写进get里,翻页 后get还是空的呢?
machyang
注册时间:2015-12-03
最后登录:2015-12-03
在线时长:0小时34分
最后登录:2015-12-03
在线时长:0小时34分
- 粉丝0
- 金钱15
- 威望0
- 积分15