让我们直入正题吧。
在分页时,不做任何设置,在数据过多时,一般默认会这样显示:
如果进行自定义修改,使用以下代码在控制器中,会修改样式。
$page -> setConfig('first','首页'); $page -> setConfig('prev','上一页'); $page -> setConfig('next','下一页'); $page -> setConfig('end','末页');
最终效果如下:
大家会发现,末页传参,依旧显示最后一页的页码,不显示文本,末页在ThinkPHP中提供了一下两种方式传参:
$page -> setConfig('end','末页'); $page -> setConfig('last','末页');
但是无论哪一种,大家都会发现传入的参数依旧无效,最后一页还是显示页码,不显示我们传入的参数‘末页’,我们今天,就是要解决这个BUG。
分页方法继承与Think\Page,所以让我们打开源码来看问题.
源码为ThinkPHP\Library\Think目录下的 Page.class.php 文件。
大家主要找到两个地方,分别是为:
分页显示定制
// 分页显示定制 private $config = array( 'header' => '<span class="rows">共 %TOTAL_ROW% 条记录</span>', 'prev' => '<<', 'next' => '>>', 'first' => '1...', 'last' => '...%TOTAL_PAGE%', 'theme' => '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%', );
最后一页
//最后一页 $the_end = ''; if($this->totalPages > $this->rollPage && ($this->nowPage + $now_cool_page) < $this->totalPages){ $the_end = '<a class="end" href="' . $this->url($this->totalPages) . '">' . $this->config['last'] . '</a>'; }
导致这一BUG的原因是最后输出的a的样式class = end 表和分页显示定制最后一页是'list',两者不一样,所以大家要解决这一BUG,就是全部修改为end。
修改分页显示定制中的list为end,如下:
'last' => '...%TOTAL_PAGE%', 修改为 'end' => '...%TOTAL_PAGE%',
修改最后一页中的list为end,如下:
$this->config['last'] 修改为 $this->config['end']
修改之后,我们看最终效果:
可以看见,末页的传参可以显示了,那这一BUG就解决了。
有人会问全部修改成list不可以吗,只用修改class = "end" 中的end为list,回答是否定的,你修改了依旧无法正常传参,其中原由说起来太过复杂,所以大家想解决这一BUG要全部修改成end,切记。
下一篇: Yii1.1.16入门级CMS...