请问 CLinkPager 如何支持附加参数

比如我利用关键词“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!我这个多此一举了。呵呵。 :rolleyes:

CLinkPager本来就支持了get参数绑定,一般也不需要加其他参数了吧?

至于是否显示header、总记录条数等等定制功能,是不是自己定一个widget,继承CLinkPager即可?可以定义多个,不同页面就用不同的pager类。

如果数据是以 post 方式提交的话,这个就有点麻烦了。

不管怎样,跨越页面请求的数据是需要一种持久化方式的。GET参数是一种,如果数据是post的,最简单的持久化方式是把它们保存到session里。

关键问题在于,如果是post的话,也只是点击搜索表单时,进行的~~

当搜索返回数据后,要切换到其它页面,要是还需要使用post模式,好像就不太合理了~~

所以,搜索,简单的,还是建议使用get模式了~