比如我利用关键词“abcd”来进行产品的搜索,显示有 5 页数据,但是翻第二页时参数 abcd 已经不见了。怎么能够将这个参数带过去。谢谢。
比如我利用关键词“abcd”来进行产品的搜索,显示有 5 页数据,但是翻第二页时参数 abcd 已经不见了。怎么能够将这个参数带过去。谢谢。
缺省情况下CLinkPager应该会把当前所有的GET参数放到它生成的link里。你是否还有其它设置?
如果我是 post 提交的呢?或者如 qiang 所说,我还有其他的设置呢?
post提交的参数是不会出现在link里的。一般的搜索form建议都做成GET提交的(例如google的搜索),这样分页就好做了。否则的话你应该把搜索的参数放到session里,这样分页时你才能获知搜索的参数。
放到 session 中的话会有性能的问题吧。提一个建议:
做一个 url_args 参数,url_args 是一个数组,形式类似于以下:
url_args = array(
'condition_1' => 'search_word_1',
'condition_2' => 'search_word_2',
......
);
view 端
<?php $this->widget('CLinkPager', array('pages' => $pages, 'url_args' => $url_args)); ?>
CLinkPager 自动判断 $url_args 是否为空,如果不为空的话则组合 url_args 的值,生成正确的翻页地址
另外 CLinkPager 简单的修改了一下,支持是否显示 header 信息,以及是否显示总记录条数。修改代码如下:
if ($this->showHeader) {
if($this->header===null)
$this->header=Yii::t('yii','Go to page: ');
}
if ($this->showCount) {
$this->footer .= 'Total ' . $this->ItemCount . ' records';
}
我想这样可定义性更强一些。qiang 看看。
刚才又看了一下,白改了,呵呵。原来 header 和 footer 可以自定义的。OMG!我这个多此一举了。呵呵。
CLinkPager本来就支持了get参数绑定,一般也不需要加其他参数了吧?
至于是否显示header、总记录条数等等定制功能,是不是自己定一个widget,继承CLinkPager即可?可以定义多个,不同页面就用不同的pager类。
如果数据是以 post 方式提交的话,这个就有点麻烦了。
不管怎样,跨越页面请求的数据是需要一种持久化方式的。GET参数是一种,如果数据是post的,最简单的持久化方式是把它们保存到session里。
关键问题在于,如果是post的话,也只是点击搜索表单时,进行的~~
当搜索返回数据后,要切换到其它页面,要是还需要使用post模式,好像就不太合理了~~
所以,搜索,简单的,还是建议使用get模式了~