YII查询条件分页的问题

我的from 是post 方式提交的

默认是没有条件的 直接显示列表

当点击查询提交后显示正常 翻页后条件丢失了 YII怎样在连接后附加参数?或别的处理方式

用SESSION判断就可以啦 

Quote

用SESSION判断就可以啦

不用SESSION  不要地址后天 跟个长串  有什么方法

自己写分页widget, 把post的数据再post到下一页中.

不管怎样,你需要一种能持久化数据的方式。你可以有以下几种选择:

  1. GET参数

  2. SESSION

  3. COOKIE

  4. hidden field

我的建议是尽量用GET参数,尤其是这种搜索查询页面。

我也遇到了同样的问题,每次查询时用post提交查询条件,然后在动作中把值写入form,form验证后进行查询,创建page实例后显示。这样查询没有问题,当换页时参数得不到页面显示空白。我想有可能是get方式传入得不到,于是在动作中判断是否有查询条件语句改为empty($_REQUEST[‘form’]),结果还是不可以,page生成的url不会把第一次post提交的查询条件写入。于是搜索源代码在CPageination.php文件中修改createPageUrl方法,由原来的$params=($this->route===’’)?$_GET:array();改为$params=($this->route===’’)?$_REQUEST:array();结果试验成功!整个原理就是第一次查询由用户点击页面查询按钮以post方式提交查询条件,再由page对象生成页码url(其中包括post提交来的查询条件,这就必须得改刚才我说的那段代码)。点击页码按钮就后就以get方式提交,由于action中是判断$_REQUEST所以没有问题可以接收到。不知道这样行不行,我测试用没有问题,只是url太长,有一些不必要的信息。

在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())

{

....处理查询

}




这样分页链接就会根据你的$_GET来生成正确的URL了

ok!明白了,多谢!

这种方法也不错 不过还是用GET好点

不错,感谢,学习中…