自定義分頁類,可根據需要格式修改

在使用yii框架做分頁時,發現yii框架本身自帶的分頁方法不支持我所需要的格式

<?php
/**
 * 分頁類
 */

class Page
{
	private $count;			// 總條數
	private $size = 10;		// 每頁顯示條數
	private $num;			// 總頁數
	private $curr;			// 當前頁
	private $offset = 3;	// 偏移量(步長)
	private $config = array(
		'last'	=> '&lt;&lt;',
		'next'	=> '&gt;&gt;',
		);
	private $param;



	public function __construct($count,$size=10)
	{
		$this->count = $count;
		$this->size = $size;

		$this->curr = isset($_GET['p']) ? $_GET['p'] : 1 ;
		$this->param = $_GET;
	}

	/**
	 * 獲取分頁碼
	 *
	 * @author BING
	 * @return string
	 */
	public function show()
	{
		$this->num = $num = ceil($this->count / $this->size);

		// 計算左側頁碼
		$leftPage =  max($this->curr - $this->offset,1);
		// 計算右側頁碼
		$rightPage = min($this->curr + $this->offset,$num);

		// 處理URL參數
		$httpParam = $this->httpBuild();

		// 上一頁
		$lastPage = '';
		if($this->curr > 1)
		{
			$lastNum = $this->curr - 1;
			$lastPage = '<a href="?'.$httpParam.'&p='. $lastNum .'">'.$this->config['last'].'</a> ';
		}
		// 下一頁
		$nextPage = '';
		if($this->curr < $num)
		{
			$nextNum = $this->curr + 1;
			$nextPage = '<a href="?'.$httpParam.'&p='. $nextNum .'">'.$this->config['next'].'</a> ';
		}		

		// 分頁鏈接
		$pageLink = '';
		for($i=$leftPage; $i <= $rightPage; $i++)
		{
			$pageLink .= ' <a href="?'.$httpParam.'&p='.$i.'">'.$i.'</a> ';
		}

		$head = '第'. $this->curr. '頁/共'. $this->num .'頁';
		return $head.$lastPage.$pageLink.$nextPage;
	}

	// 設置分頁樣式
	public function setConfig($config)
	{
		foreach ($config as $key => $value)
		{
			$this->config[$key] = $value;
		}
	}

	protected function httpBuild()
	{
		if(isset($this->param['p']))
		{
			unset($this->param['p']);
		}
		return http_build_query($this->param);
	}
}

?>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章