自定义分页,不用Yii自带的组件 [ 未指定版本 ]
控制器的代码
public function actionList($type = 'new', $page = 1)
{
if($page < 1)
$page = 1;
$articles = Articles::model()->lists($type, $page);
$pageCount = Articles::model()->pageCount();
if($page > $pageCount)
$page = $pageCount;
$this->render('list',array(
'articles'=>$articles,
'currentPage'=>$page,
'pageCount'=>$pageCount,
));
}
数据模型的代码
/**
* list
*/
public function lists($type, $page)
{
$limit = $this->_pageNum;
$offset = $limit * ($page - 1);
$criteria = new CDbCriteria;
$criteria->select = '*';
$criteria->condition = 'type != "page"';
$criteria->limit = $limit;
$criteria->offset = $offset;
//$criteria->condition='postID=:postID';
//$criteria->params=array(':postID'=>$id);
if($type === 'hot'){
//热门
$criteria->order = 'viewNum DESC';
}else{
//最新
$criteria->order = 'created DESC';
}
return $this->findAll($criteria);
}
/**
* 总页数
* pageCount
* @return String
*/
public function pageCount()
{
$condition = 'type != :type';
$params = array(':type'=>'page');
$articleCount = $this->count($condition, $params);
//向上取整
return ceil($articleCount / $this->_pageNum);
}
$this->_pageNum 这个是每个显示的数据条数
视图的代码
<ul class="pagination">
<?php
$firstPage = '<li class="hidden-xs">'.CHtml::link('1', array('', 'page'=>1)).'</li>';
$lastPage = '<li>'.CHtml::link($pageCount, array('', 'page'=>$pageCount)).'</li>';
$prevPage = '<li>'.CHtml::link('上一页', array('', 'page'=>$currentPage-1)).'</li>';
$nextPage = '<li>'.CHtml::link('下一页', array('', 'page'=>$currentPage+1)).'</li>';
$morePage = '<li class="disabled hidden-xs"><span>...</span></li>';
if($currentPage > 1)
echo $prevPage;
if($currentPage > 3)
echo $firstPage.$morePage;
for($i = $currentPage-2; $i <= $currentPage+2; $i++) {
$liStr = '<li class="hidden-xs">'.CHtml::link($i, array('', 'page'=>$i)).'</li>';
if($i<1 || $i>$pageCount)
$liStr = '';
if($currentPage == $i)
$liStr = '<li class="active">'.CHtml::link($i.' <span class="sr-only">(current)</span>',
array('', 'page'=>$i)).'</li>';
echo $liStr;
}
if($currentPage < $pageCount-2)
echo $morePage;
if($currentPage < $pageCount)
echo $nextPage;
?>
</ul>
效果图
原本想添上效果图的,但是这个编辑器目前只支持网络上的链接
我是模仿http://segmentfault.com/的分页导航做的,差不多一致了
本人目前的水平也就做成这样了,可能大家有更好的方法,一起讨论讨论
目前暂时不做成组件扩展形式,以后会做的
最后只想说,这个编辑器太不好用了。。。 可能代码也是乱的,自己放在编辑器里格式化下吧
msmao
注册时间:2014-08-26
最后登录:2016-03-15
在线时长:226小时11分
最后登录:2016-03-15
在线时长:226小时11分
- 粉丝5
- 金钱68
- 威望10
- 积分2428
热门源码
- 基于 Yii 2 + Bootstrap 3 搭建一套后台管理系统 CMF
- 整合完 yii2-rbac+yii2-admin+adminlte 等库的基础开发后台源码
- 适合初学者学习的一款通用的管理后台
- yii-goaop - 将 goaop 集成到 Yii,在 Yii 中优雅的面向切面编程
- yii-log-target - 监控系统异常且多渠道发送异常信息通知
- 店滴云1.3.0
- 面向对象的一小步:添加 ActiveRecord 的 Scope 功能
- Yii2 开源商城 FecShop
- 基于 Yii2 开发的多店铺商城系统,免费开源 + 适合二开
- leadshop - 基于 Yii2 开发的一款免费开源且支持商业使用的商城管理系统
共 2 条评论
果真,编辑器出问题了,好在大致能看。 上面的链接错了, http://segmentfault.com/
别依赖编辑器,就用正常的markdown语法去写。
@╃巡洋艦㊣ 您好,请教您,我希望可以定制分页的具体显示,我的需求是 显示首尾,上下,当前页五个按钮就够了,不要显示太多按钮,请问在哪里可以看到相关比较权威的资料呢?
为什么要重新发明轮子?
自带的有什么不好使?
自定义可以去实现所有的全部走接口 这样移动端 PC端都可以统一去调整管理