分页代码实现

/**
* a: porter
* 分页的html代码
**/
public function getPagerHtml($option = array()){
    // 读取当前controller和action
    GLOBAL $__controller,$__action;

    $pager = $this->pageData;
    $current_page = $pager['current_page']; 
    $html = <<<EOF
    <div class='col-md-12 center-block'>
        <div class='dataTables_paginate paging_bootstrap pagination'>
            <ul class='pagination'>
EOF;
    if($pager['current_page'] != $pager['first_page']){ // 上一页
        $option['page'] = $current_page-1;
        $html .= "<li class='prev'><a href='" . spUrl($__controller , $__action , $option) . "'>上一页</a></li>";
    }

    // 如果分页数小于10,则显示所有的页码
    if($pager['total_page'] <= 10){
        for($i=1;$i<=$pager['total_page'];$i++){
            $option['page'] = $i;
            $html .= "<li class='" . ($current_page==$i?'active':'') . "'><a href='" . spUrl($__controller,$__action,$option) . "'>$i</a></li>";
        }
    }
    // 否则显示部门页码
    else {
        // 页码3种显示方式
        if($current_page <= 8){
            for($i=1;$i<=8;$i++){
                $option['page'] = $i;
                $html .= "<li class='" . ($current_page==$i?'active':'') . "'><a href='" . spUrl($__controller,$__action,$option) . "'>$i</a></li>";
            }
            $html .= "<li><a>...</a></li>";
            $option['page'] = $pager['last_page'];
            $html .= "<li class='" . ($current_page==$i?'active':'') . "'><a href='" . spUrl($__controller,$__action,$option) . "'>".$pager['last_page']."</a></li>";
        }
        else if($current_page >= $pager['last_page'] - 8){
            $option['page'] = 1;
            $html .= "<li class='" . ($current_page==$i?'active':'') . "'><a href='" . spUrl($__controller,$__action,$option) . "'>1</a></li>";
            $html .= "<li><a>...</a></li>";
            for($i=$pager['last_page']-8;$i<=$pager['last_page'];$i++){
                $option['page'] = $i;
                $html .= "<li class='" . ($current_page==$i?'active':'') . "'><a href='" . spUrl($__controller,$__action,$option) . "'>$i</a></li>";
            }

        } else{
            $option['page'] = 1;
            $html .= "<li class='" . ($current_page==$i?'active':'') . "'><a href='" . spUrl($__controller,$__action,$option) . "'>1</a></li>";
            $html .= "<li><a>...</a></li>";
            for($i=$current_page-4;$i<=$current_page+4;$i++){
                $option['page'] = $i;
                $html .= "<li class='" . ($current_page==$i?'active':'') . "'><a href='" . spUrl($__controller,$__action,$option) . "'>$i</a></li>";
            }
            $html .= "<li><a>...</a></li>";
            $option['page'] = $pager['last_page'];
            $html .= "<li class='" . ($current_page==$i?'active':'') . "'><a href='" . spUrl($__controller,$__action,$option) . "'>".$pager['last_page']."</a></li>";
        }
    }

    if($pager['current_page'] != $pager['last_page']){ // 下一页
        $option['page'] = $current_page+1;
        $html .= "<li class='prev'><a href='" . spUrl($__controller , $__action , $option) . "'>下一页</a></li>";
    }       
    $html .= "</ul></div></div";
    return $html;
}