本文实例讲述了CI分页类首页、尾页不显示的解决方法。分享给大家供大家参考,具体如下:
看了下手册说,每次都要重新去写一次呢些$config,可以新建一个文件放到config文件夹下面,考虑了下,config这个文件夹系统会自动加载,也就是说不管你访问什么页面这文件夹里面的所有信息都会被加载,所以,要想在这个文件里面去写就需要写方法,这样即使加载如果不去加载也是没有关系的。本人没有沿用手册上的说法做。
我的思路:既然我们是在CI这框架下写的东西,而且每个控制器都会引入父类CI_Controller这个类,所有我就在这个类中创建了一个方法,名page代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public function page( $url , $total , $pre , $status =TRUE){ $this ->load->library( 'pagination' ); $config [ 'base_url' ] = $url ; $config [ 'total_rows' ] = $total ; $config [ 'per_page' ] = $pre ; $config [ 'page_query_string' ] = $status ; $config [ 'first_link' ] = 'First' ; //首页 $config [ 'first_tag_open' ] = '' ; $config [ 'first_tag_close' ] = '' ; $config [ 'last_link' ] = 'Last' ; //尾页 $config [ 'last_tag_open' ] = '' ; $config [ 'last_tag_close' ] = '' ; $this ->pagination->initialize( $config ); $page_list = $this ->pagination->create_links(); return $page_list ; } |
参数说明,$url: 当前需要使用分页的地址。 $total:总数。 $pre:每页显示的数量 $status默认是true 传page以&page=1 的方式,如果修改成false则已page/1的方式显示。
然后直接在你的控制器中如下使用即可
1
2
|
$page_list = $this ->page( "http://XXX.XXXX.com/XXX/XXX" ,总数,页显示数量); //分页 |
这样既可。
tips:系统自带的传值形参不叫page而是pre_page好像,忘了,由于参数过长,你就在 根目录--》system-->libraries--》Pagination.php里面 找到var $query_string_segment ="形参";这里修改page即可。
测试是发现如果按照上面的写法,首页和尾页不显示的原因:你的数据量太少了,分页数据至少在4页以上才会出现 首页这个字样,但是我们可以修改,这里我设定为3页才显示,则也去这个 pagination.php文件中找到
var $num_links = 2;这里默认是2也就是第四页才显示,修改成1 ,注意,这里最小只能修改成1,如果你想在任何情况下都显示则需要修改代码,找到这段代码:
1
|
if ( $this ->first_link !== FALSE AND $this ->cur_page > ( $this ->num_links + 1)) |
修改将and 后面的都去掉即可,因为and后面就是限定条件,说明下:$this->cur_page表示当前页, $this->num_links就是要显示在什么时候才显示的,还有其他代码这里就不说明了,自己查找下问啥$num_links不能设置为0
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。