thinkphp自帶Page類使用時候setconfig() name=last的時候不生效

yi_an發表於2016-07-26

問題:
在使用thinkphp自帶分頁類時,在設定尾頁顯示的最後一頁時,用setConfig(“last”,”尾頁”)來設定樣式,發現無效。

分析:
在分頁類(/ThinkPHP/Library/Think/Page.class.php)裡面有一個共有屬性:
public $lastSuffix = true; // 最後一頁是否顯示總頁數
在show方法的實現中:
$this->lastSuffix && $this->config['last'] = $this->totalPages;
所以如果$lastSuffix = true的話,setConfig(‘last’,’尾頁’)的設定會被重置,也就是說,我們的setConfig(“last”,”尾頁”)被覆蓋了。
解決方法:
1、我們可以在分頁類裡面直接修改屬性:
public $lastSuffix = true;
但是,我們不知道類中在其他地方是否有使用到$lastSuffix這個變數,因此,為了不影響整個類,我們可以修改setConfig()方法

2、修改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;
}
}
}

好了,現在我們的setConfig(“last”,”尾頁”);已經能夠正常工作了。

相關文章