返回列表 回复 发帖

[推荐] Qeephp分页组件使用

先将pagination.php文件放到\_code\app\control 文件夹下
Pagination.php 内容如下:
<?php
class Control_Pagination extends QUI_Control_Abstract
{
    function render()
    {
        $pagination = $this->pagination;
        $udi        = $this->get('udi', $this->_context->requestUDI());
        $length     = $this->get('length', 9);
        $slider     = $this->get('slider', 2);
        $prev_label = $this->get('prev_label', '上一页');
        $next_label = $this->get('prev_label', '下一页');
        $url_args   = $this->get('url_args');
        $out = "<div class=\"pagination\">\n";
        if ($this->get('show_count'))
        {
            $out .= "<p>共 {$pagination['record_count']} 个条目</p>\n";
        }
        $out .= '<ul id="' . h($this->id()) . "\">\n";
        $url_args = (array)$url_args;
        if ($pagination['current'] == $pagination['first'])
        {
            $out .= "<li class=\"disabled\">« {$prev_label}</li>\n";
        }
        else
        {
            $url_args['page'] = $pagination['prev'];
            $url = url($udi, $url_args);
            $out .= "<li><a href=\"{$url}\">« {$prev_label}</a></li>\n";
        }
        $base = $pagination['first'];
        $current = $pagination['current'];
        $mid = intval($length / 2);
        if ($current < $pagination['first'])
        {
            $current = $pagination['first'];
        }
        if ($current > $pagination['last'])
        {
            $current = $pagination['last'];
        }
        $begin = $current - $mid;
        if ($begin < $pagination['first'])
        {
            $begin = $pagination['first'];
        }
        $end = $begin + $length - 1;
        if ($end >= $pagination['last'])
        {
            $end = $pagination['last'];
            $begin = $end - $length + 1;
            if ($begin < $pagination['first'])
            {
                $begin = $pagination['first'];
            }
        }
        if ($begin > $pagination['first'])
        {
            for ($i = $pagination['first']; $i < $pagination['first'] + $slider && $i < $begin; $i ++)
            {
                $url_args['page'] = $i;
                $in = $i + 1 - $base;
                $url = url($udi, $url_args);
                $out .= "<li><a href=\"{$url}\">{$in}</a></li>\n";
            }
            if ($i < $begin)
            {
                $out .= "<li class=\"none\">...</li>\n";
            }
        }
        for ($i = $begin; $i <= $end; $i ++)
        {
            $url_args['page'] = $i;
            $in = $i + 1 - $base;
            if ($i == $pagination['current'])
            {
                $out .= "<li class=\"current\">{$in}</li>\n";
            }
            else
            {
                $url = url($udi, $url_args);
                $out .= "<li><a href=\"{$url}\">{$in}</a></li>\n";
            }
        }
        if ($pagination['last'] - $end > $slider)
        {
            $out .= "<li class=\"none\">...</li>\n";
            $end = $pagination['last'] - $slider;
        }
        for ($i = $end + 1; $i <= $pagination['last']; $i ++)
        {
            $url_args['page'] = $i;
            $in = $i + 1 - $base;
            $url = url($udi, $url_args);
            $out .= "<li><a href=\"{$url}\">{$in}</a></li>\n";
        }
        if ($pagination['current'] == $pagination['last'])
        {
            $out .= "<li class=\"disabled\">{$next_label} »</li>\n";
        }
        else
        {
            $url_args['page'] = $pagination['next'];
            $url = url($udi, $url_args);
            $out .= "<li><a href=\"{$url}\">{$next_label} »</a></li>\n";
        }
        $out .= "</ul></div>\n";
        return $out;
    }
}

编写控制器的动作方法:
function actionList()
{
   $page = intval($this->_context->page);
   if ($page < 1) $page = 1;
   // 每页 10 个结果
   $page_size = 10;
   // 进行分页查询,并取得分页信息
   $pagination = null;
   $rs=Goodstype::find()->limitPage($page, $page_size)
   ->fetchPagination($pagination)
   ->get();
   // 将查询结果和分页数据传递到视图
   $this->_view['posts'] = $rs;
   $this->_view['pagination'] = $pagination;

}
给视图中添加一行代码:显示出分页导航条
<?php $this->_control('pagination', 'my-pagination', array('pagination' => $pagination)); ?>再将样式表放到\css文件夹下:pagination.css

.pagination {
font-size: 12px;
font-weight: bold;
}
.pagination p {
float: left;
color: #666;
text-indent: 0;
padding: 2px 0 0 0;
margin: 0 2em 0 0;
}
.pagination ul {
list-style: none;
margin: 0px;
padding: 0px;
}
.pagination li {
list-style: none;
background-color: #fff;
margin: 0px;
display: block;
float: left;
margin-left: 2px;
margin-right: 2px;
line-height: 14px;
}
.pagination li.disabled {
border: 1px solid #DDDDDD;
padding: 2px 6px 2px 6px;
color: #ccc;
}
.pagination li.current {
border: 1px solid #2E6AB1;
padding: 2px 6px 2px 6px;
background-color: #2E6AB1;
color: #fff;
}
.pagination li.none {
border: 1px none;
padding: 2px 6px 2px 6px;
}
.pagination li a {
border: 1px solid #9AAFE5;
padding: 2px 6px 2px 6px;
display: block;
text-decoration: none;
}
.pagination li a:hover {
border: 1px solid #2E6AB1;
}
大功告成!,试试看,绝对让你感到惊喜!!!!!!!!!!!!1不要忘记把CSS样式表导进去哦,不然绝对不会出现入门教程上的效果啊!
原因预示了结果,方法注定了结局,种子孕育了果实!
难道有什么问题吗?好冷清啊!!!!!请指点指点!
原因预示了结果,方法注定了结局,种子孕育了果实!
我试验过了,没有问题,Qeephp 很好很强大! Pagination分页控件也很好很强大! 为有这么强大的国产MVC框架感到兴奋!支持国产支持Qeephp!
国内的框架里面却是还算不错的 支持一下
第一次发帖 支持一下
返回列表