自定义函数:可实现完全自定义分页的所有内容

startmvc php框架学习社区

技术交流社区
自定义函数:可实现完全自定义分页的所有内容
mortal 普通会员 时间:2024-09-27 12:32:50 浏览:249

这里写的是自定义函数,当然也可以转化为拓展,实现更丰富的内容

此函数基于StartMVC V2.1.2实现

/function/下新建函数自定义文件或直接粘贴默认的文件里

/**
**
* page  分页数据处理自定义
* 
* author  QQ1977441805
* *
**/
if(!function_exists('page_html')){
    function page_html($array=array(),$page='page',$li='li,page-item',$text='span,page-link',$prev="上一页",$next="下一页",$active='active',$disabled='disabled'){
        if(is_array($array)&&!empty($array)){
            if((empty($li) || !is_string($li))|| (empty($text) || !is_string($text))){
                return;
            }
            $li = explode(',',$li);
            $li_0 = isset($li[0])?$li[0]:'li';
            $li_1 = isset($li[1])?$li[1]:'';
            $text = explode(',',$text);
            $text_0 = isset($text[0])?$text[0]:'span';
            $text_1 = isset($text[1])?$text[1]:'';
            $totalPage = $array['total'];
            if($totalPage <= 10){
                $min = 1;
                $max = $totalPage;
            } else {
                $min = max(1, ($array['current'] - 5));
                $max = min($totalPage, ($array['current'] + 5));
                if($min === 1){
                    $max = 10;
                } elseif($max === $totalPage) {
                    $min = ($totalPage - 9);
                }
            }
            
            $html = '';
            
            $prev_dbd = ($array['current'] > 1 ? null : $disabled);
            $prev_page = ($array['current'] > 1 ? $array['current'] - 1 : 1);
            $prev_href = ($array['current'] > 1 ? 'href="?'.$page.'='.$prev_page.'"' : null);
            
            $next_dbd = ($array['current'] < $array['total'] ? null : $disabled);
            $next_page = ($array['current'] < $array['total'] ? $array['current'] + 1 : $array['total']);
            $next_href = ($array['current'] < $array['total'] ? 'href="?'.$page.'='.$next_page.'"' : null);
            
            $html .= '<'.$li_0.' class="'.$li_1.' '.$prev_dbd.'"><'.$text_0.' class="'.$text_1.'" '.$prev_href.'">'.$prev.'';
            
            for($i = $min; $i <= $max; $i++){
                $class = ($i == $array['current'] ? $active : null);
                $href = ($i == $array['current'] ? null : 'href="?'.$page.'='.$i.'"');
                if($href){
                    $text_0 = 'a';
                }
                $html .='<'.$li_0.' class="'.$li_1.' '.$class.'"><'.$text_0.' class="'.$text_1.'" '.$href.'>'.$i.'';
            }
            
            $html .= '<'.$li_0.' class="'.$li_1.' '.$next_dbd.'"><'.$text_0.' class="'.$text_1.'" '.$next_href.'">'.$next.'';
            
            return $html;
        }else{
            return;
        }
    }
}

效果图:


使用方法:

$pages = $this->db->pagerData();
$page_html = page_html($pages);
参数说明
$arrayarrayStartMVC pagerData 的数组
$pageString分页标识
$liString基于常见的ul li 分页写法,此处传递的即为分页外层html闭合标签 仅支持闭合标签,例:li
$textString包裹页码的html闭合标签 仅支持闭合标签 例如:a  span 当页码可点击时会强制转换a标签
$prevString上一页显示的文字,符号
$nextString下一页显示的文字,符号
$activeString页码高亮样式
$disabledString页码禁止点击样式


回复列表
0个回复