【数据分页】setConfig('last','尾页')无效bug详解

浏览:4662 发布日期:2015/06/27 分类:技术分享 关键字: thinkphp 数据分页 尾页 last setConfig 尾页失效
【Bug描述】
在使用TP的数据分页时,设置setConfig('last','尾页')无效,尾页显示的最后一页的页码;而其他设置有效。
【Bug剖析】
在分页类里有一个共有属性:
public $lastSuffix = true; // 最后一页是否显示总页数 在show方法的实现中:
$this->lastSuffix && $this->config['last'] = $this->totalPages; 所以如果$lastSuffix = true的话,setConfig('last','尾页')的设置会被重置。
【Bug鉴定】
要想解决这个问题需在调用setConfig('last','尾页');之前设置$Page->lastSuffix = false;这也许是TP框架希望我们这样做的。但这并不合理,因为我们在调用setConfig('last','尾页')的时候已经表达了我们不会使用总页数作为尾页,而是希望使用自己设置的参数,TP应该聪明的察觉到开发人员的意愿。
【Bug解决】
一种比较果断的解决方式是直接删除$lastSuffix这个属性(当然也要删除show方法中相应的代码),因为它完全是多余的。
较为保守而且聪明的做法是修改setConfig()方法:
修改前:
        public function setConfig($name,$value) {
               if(isset($this->config[$name])) {
                 $this->config[$name] = $value;
               }
         }
       
修改后:
        public function setConfig($name,$value) {
        if(isset($this->config[$name])) {
            $this->config[$name] = $value;
            if($name == 'last'){
               $this->lastSuffix = false;
            }
        }
       }
       
【效果演示】


最佳答案
评论( 相关
后面还有条评论,点击查看>>