ThinkPHP的分页类写得不错,在做其他项目时,可能不是用的TP框架,那么如何只将TP的分页这个工具类单独拿出来用呢?
1.将Page.class.php拷贝到你的项目中
Page.class.php位置在\ThinkPHP\Library\Think\Page.class.php,将这个文件copy到你的项目中。
2.将其中的TP元素改成自己的
Page.class.php中用到了很多TP自己的函数,例如C方法,U方法等,这些我们需要改成自己的。
2.1 注释掉第43行代码
C(‘VAR_PAGE’) && $this->p = C(‘VAR_PAGE’); //设置分页参数名称
2.2 show方法里面更改$this->url
TP在生成分页的链接时会将[PAGE]这个标志替换为具体的每个页面的链接,原本的代码如下:
/* 生成URL */
$this->parameter[$this->p] = ‘[PAGE]’;
$this->url = U(ACTION_NAME, $this->parameter);
我们需要将其更改为自己的:
/* 生成URL */
$mypage = urlencode(‘[PAGE]’);
$cur_controller = CONTROLLER; //当前控制器的名字,根据你自己的定义来修改
$cur_action = ACTION; //当前方法的名字,根据你自己的定义来修改
$this->url = “/index.php?c=$cur_controller&a=$cur_action&p=$mypage&pagesize=”.$this->listRows;
一般我们会在模型里写一个方法来调用这个分页工具类,举例如下:
//获得分页工具条 public function getPage($count,$pagesize=10) { $page = new Page($count, $pagesize); $page->setConfig(‘theme’, ‘%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%’); //设置分页主题 //判断当前页码是否符合要求,即是否存在空页的情况 if ($page->firstRow >= $page->totalRows) { $start = $page->totalRows – $page->listRows; $start = $start < 0 ? 0 : $start; $page->firstRow = $start; } $pageHTML = $page->show(); //生成分页工具条HTML return array(‘pageHTML’ => $pageHTML); }
通过调用getPage方法,并传入总条数和每页显示的条数两个参数,就可以获得分页的html代码了。