yii2框架的index页面的分页是怎么yii实现分页的

视图组件是 MVC 的重要部分。视图作为应用界面,履行其向终端用户展示数据的职责,如显示表单等。
Yii 默认使用 PHP 作为视图模板来生成内容和元素。web 应用视图通常包括一些 HTML 和 PHP echo, foreach, if 等基础结构的联合体。视图中使用复杂的 PHP 代码被认为是不良实践。当复杂逻辑和功能是必须的,这些代码应移动到控制器或小部件。
视图通常被控制器动作用[[yii\base\Controller::render()|render()]]方法调用:
public function actionIndex()
return $this->render('index', ['username' => 'samdark']);
[[yii\base\Controller::render()|render()]]方法的第一个参数是拟显示的视图名。在控制器背景下,Yii 将在 views/site/ 目录下寻找该控制器的视图文件,其中 site 是控制器 ID 。更多有关视图名如何分解 的细节请参考[[yii\base\Controller::render()]]方法。
[[yii\base\Controller::render()|render()]]的第二个参数是键值对数组,控制器通过该数组将数据传递给视图,数组键为视图变量名,数组值在视图中通过引用相应的数组键变量名可获取使用。
上述动作 actionIndex 的视图是views/site/index.php ,在视图中可以这样使用:
&p&Hello, &?= $username ?&gt! &/p&gt
render()第二个参数的数组键'username' 在视图文件中作为变量名 $username 使用,引用输出的结果是第二个参数的数组值 'samdark'。
任何数据类型都可以传递给视图,包括数组和对象。
除了上述的[[yii\web\Controller::render()|render()]]方法,[[yii\web\Controller]]类还提供了一些其他的渲染方法,以下是这些方法的摘要:
[[yii\web\Controller::render()|render()]]:渲染视图并应用布局到渲染结果,最常用于整个页面的渲染。
[[yii\web\Controller::renderPartial()|renderPartial()]]:渲染无须布局的视图,常用于渲染页面片段。
[[yii\web\Controller::renderAjax()|renderAjax()]]:渲染无须布局的视图并注入已注册的 JS/CSS 脚本文件。通常用于渲染响应 AJAX 请求的 HTML 输出。
[[yii\web\Controller::renderFile()|renderFile()]]:渲染视图文件,和 [[yii\web\Controller::renderPartial()|renderPartial()]]类似,除了该方法使用视图文件路径而 不是视图文件名做参数。
小部件(Widgets)
小部件用于视图,是独立的积木块,一种结合复杂逻辑、显示和功能到简单组件的方法(如官方给出的Alert方法,用于展示提示信息)。一个小部件:
可能包括 PHP 高级编程
通常是可配置的
通常提供要显示的数据
在视图内返还要显示的 HTML
Yii 捆绑了大量的小部件,如,面包屑,菜单和。另外,Yii 扩展提供更多小部件,如的官方小部件。
要使用小部件,视图文件须如下操作:
// 注意必须 "echo" 结果才能显示
echo \yii\widgets\Menu::widget(['items' => $items]);
// 传递数组以初始化对象属性
$form = \yii\widgets\ActiveForm::begin([
'options' => ['class' => 'form-horizontal'],
'fieldConfig' => ['inputOptions' => ['class' => 'input-xlarge']],
... 表单输入数据在此 ...
\yii\widgets\ActiveForm::end();
主要的安全原则之一是始终转义输出。违反该原则将导致脚本执行,更可能导致被称为 XSS 的跨站点脚本攻击,以致管理员密码泄露,使用户可以自动执行动作等。
Yii 提供了很好的工具以帮助你转义输出。最基本的转义要求是文本不带任何标记。可以如下这样处理:
use yii\helpers\H
&?= Html::encode($user->name) ?>
如果需要渲染的 HTML 变得复杂,可以分配转义任务给优秀的HTMLPurifier库,这个库在 Yii 中包装成一个助手类[[yii\helpers\HtmlPurifier]]:
use yii\helpers\HtmlP
&?= HtmlPurifier::process($post->text) ?>
注意虽然 HTMLPurifier 在输出安全上非常优秀,但它不是非常快速,所以可考虑。
任选其一的两种模板语言
官方扩展的模板引擎有 和 。了解更多内容请参考本指南的部分。
模板中使用视图对象
[[yii\web\View]]组件的实例在视图模板中可用,以$this 变量表示。模板中使用视图对象可以完成许多有用的事情,如设置页面标题和元标签(meta tags),注册脚本和访问环境(控制器或小部件)。
设置页面标题
通常在视图模板设置页面标题。既然可以使用$this 访问视图对象,设置标题变得非常简单:
$this->title = 'My page title';
添加元标签
添加元标签(meta tags)如编码、描述、关键词用视图对象也是非常简单的:
$this->registerMetaTag(['encoding' => 'utf-8']);
第一个参数是
标签选项名和值的映射。以上代码将生成:
有时一个类型只允许存在一条标签,这种情况需要指定第二个参数:
$this->registerMetaTag(['name' => 'description', 'content' => 'This is my cool website made with Yii!'], 'meta-description');
$this->registerMetaTag(['name' => 'description', 'content' => 'This website is about funny raccoons.'], 'meta-description');
如果有第二个参数相同的多个调用(该例是 meta-description),后者将覆盖前者,只有一条标签被渲染:
注册链接标签
&link>标签在许多情况都非常有用,如自定义网站图标、指向 RSS 订阅和分派 OpenID 到另一个服务器。 Yii 的视图对象有一个方法可以完成这些目标:
$this->registerLinkTag([
'title' => 'Lives News for Yii Framework',
'rel' => 'alternate',
'type' => 'application/rss+xml',
'href' => '/rss.xml/',
上面的代码运行的结果
&link title="Lives News for Yii Framework" rel="alternate" type="application/rss+xml" href="/rss.xml/" />
跟 meta 标签一样,你可以指定其它的参数来确保每种类型只有一个链接被注册。
用[[yii\web\View::registerCss()|registerCss()]] 或 [[yii\web\View::registerCssFile()|registerCssFile()]]来注册 CSS。前者注册 CSS 代码块,而后者注册了一个外部的 CSS 文件。如:
$this->registerCss("body { background: #f00; }");
以上代码运行结果是添加下面代码到页面的 head 部分:
要指定样式标签的其他属性,可以传递键值对数组到第三个参数。如需确保只有一个样式标签,用第四个参数,方法如 meta 标签描述的一样。
$this->registerCssFile("/css/themes/black-and-white.css", [BootstrapAsset::className()], ['media' => 'print'], 'css-print-theme');
以上代码将添加一条 CSS 文件链接到页面的 head 部分。
第一个参数指定要注册的 CSS 文件。
第二个参数指定该 CSS 文件基于[[yii\bootstrap\BootstrapAsset|BootstrapAsset]],意味着该 CSS 文件将添加在[[yii\bootstrap\BootstrapAsset|BootstrapAsset]]的 CSS 文件后面。不指定这个依赖关系,这个 CSS 文件和[[yii\bootstrap\BootstrapAsset|BootstrapAsset]] CSS 文件的相对位置就是未定义的。
第三个参数指定&link& 标签有哪些属性。
最后一个参数指定识别该 CSS 文件的 ID 。如没提供,将使用 CSS 文件的 URL 替代。
强烈推荐使用来注册外部 CSS 文件,而不是使用[[yii\web\View::registerCssFile()|registerCssFile()]]。资源包允许你结合和压缩多个 CSS 文件,这在大流量站点非常可取。
注册脚本文件
[[yii\web\View]]对象可以注册脚本,有两个专用方法: 用于内部脚本的[[yii\web\View::registerJs()|registerJs()]]和用于外部脚本文件的[[yii\web \View::registerJsFile()|registerJsFile()]]。内部脚本在配置和动态生成代码上非常有用。方法添加这些功能的 使用如下:
$this->registerJs("var options = ".json_encode($options).";", View::POS_END, 'my-options');
第一个参数是要插入页码真正的 JS 代码,第二个参数是确定脚本在页面的哪个位置插入,可能的值有:
[[yii\web\View::POS_HEAD|View::POS_HEAD]] 头部
[[yii\web\View::POS_BEGIN|View::POS_BEGIN]] 刚打开 &body& 后
[[yii\web\View::POS_END|View::POS_END]] 刚关闭 &/body& 前
[[yii\web\View::POS_READY|View::POS_READY]] 文档 ready 事件执行代码时。这将自动注册[[yii\web\JqueryAsset|jQuery]]。
[[yii\web\View::POS_LOAD|View::POS_LOAD]] 文档load事件执行代码时,这将自动注册[[yii\web\JqueryAsset|jQuery]]。
最后的参数是用来识别代码块的唯一脚本 ID ,ID 相同将替换存在的脚本代码而不是添加新的。如不提供, JS 代码会用自己来做脚本 ID 。
外部脚本可以如下这样添加:
$this->registerJsFile('/js/main.js', [JqueryAsset::className()]);
[[yii\web\View::registerJsFile()|registerJsFile()]]的参数和 [[yii\web\View::registerCssFile()|registerCssFile()]]的参数类似。上例中依赖 JqueryAsset 注册main.js 文件。就是说 main.js 文件添加在 jquery.js 后面。不指明这个依赖关系, main.js 和 jquery.js 的相对位置就是未定义。
如同[[yii\web\View::registerCssFile()|registerCssFile()]],强烈推荐使用来注册外部 JS 文件而不是使用[[yii\web\View::registerJsFile()|registerJsFile()]]。
注册资源包
如前所述,使用资源包替代直接使用 CSS 和 JS 是更好的方式。定义资源包的更多细节请参考本指南的部分。使用已定义资源包是非常直观的:
\frontend\assets\AppAsset::register($this);
布局是表现页面通用部分的便利方式。通用部分可以在全部页面或至少你应用的大多数页面通用。通常布局包括&head& 部分,footer,主菜单和这样的元素。可以在找到布局的使用示例。这里将回顾一个非常基本、没有任何小部件或额外标记的布局:
use yii\helpers\H
&?php $this->beginPage() ?>请教如何实现TP官网的分页URL - ThinkPHP框架
/topic/index/p/2.html
我的栏目ID2下查询出来的数据分页后URL如下:
/index/page/id/2/p/2.html
请教应该怎么弄。
另外想问下,分页的URL能用路由重写吗,手册里没翻到,求具体操作步骤。
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。Yii2分页的使用及其扩展方法详解
作者:白狼
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Yii2分页的使用及其扩展方法详解的相关资料,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
说明下我们本篇文章都要讲哪些内容
分页的使用,一步一步的教你怎么做
分页类LinkPager和Pagination都可以自定义哪些属性
分页类LinkPager如何扩展成我们所需要的
第一步,我们来看看yii2自带的分页类该如何去使用?
1、controller action
use yii\data\P
$query = Article::find()-&where(['status' =& 1]);
$countQuery = clone $
$pages = new Pagination(['totalCount' =& $countQuery-&count()]);
$models = $query-&offset($pages-&offset)
-&limit($pages-&limit)
return $this-&render('index', [
'models' =& $models,
'pages' =& $pages,
use yii\widgets\LinkP
//循环展示数据
foreach ($models as $model) {
//显示分页页码
echo LinkPager::widget([
'pagination' =& $pages,
代码基本上可以完全拷贝,修改部分数据即可,相信大多数人都是看得懂的。
我们接下来看第二步,自带的分页类都可以定义哪些属性
首先我们说说LinkPager组件
.pagination参数必填,这个是我们Pagination类的实例
默认分页类是下面这个样子的
.上下页按钮以及10个按钮
首先,我们把上下页的按钮修改成中文
&?= LinkPager::widget([
'pagination' =& $pages,
'nextPageLabel' =& '下一页',
'prevPageLabel' =& '上一页',
]); ?&
如果你不想要显示上下页,可以将prevPageLabel和nextPageLabel设置为false
&?= LinkPager::widget([
'pagination' =& $pages,
'nextPageLabel' =& false,
'prevPageLabel' =& false,
]); ?&
默认不显示首页也尾页,如果你需要,可以这样设置
&?= LinkPager::widget([
'pagination' =& $pages,
'firstPageLabel' =& '首页',
'lastPageLabel' =& '尾页',
]); ?&
如果你的数据过少,不够2页,默认不显示分页,如果你需要,设置hideOnSinglePage=false即可
&?= LinkPager::widget([
'pagination' =& $pages,
'hideOnSinglePage' =& false,
]); ?&
默认显示的页码为10页,可以设置maxButtonCount为你想要展示的页数
&?= LinkPager::widget([
'pagination' =& $pages,
'maxButtonCount' =& 5,
]); ?&
有些人不喜欢默认的样式,想要分页带上自己的样式,可以设置options,不要忘了自行实现pre,next,disabled等样式
&?= LinkPager::widget([
'pagination' =& $pages,
'options' =& ['class' =& 'm-pagination'],
]); ?&
接下来我们谈谈Pagination组件
默认的分页路由是下面这样子的,我们看看能做点什么
/controller/action?page=2&per-page=20
首先,我们是必须要指定总条数totalCount的,没这个参数,分页也是没办法实现的
$pages = new Pagination([
'totalCount' =& $totalCount,
默认分页的数量是20,你可以设置pageSize为你想要的
$pages = new Pagination([
'totalCount' =& $totalCount,
'pageSize' =& 5,
从上面的分页路由我们可以看到,默认带的有每页的数量per-page 如果你不想显示该参数,设置pageSizeParam=false就好
$pages = new Pagination([
'totalCount' =& $totalCount,
'pageSizeParam' =& false,
我们也可以看到,默认的页面取决于参数page,如果你想改变该参数为p,设置pageParam=p就好
$pages = new Pagination([
'totalCount' =& $totalCount,
'pageParam' =& 'p',
如果你的分页存在于首页,相信你肯定想要/?p=1而不是/site/index?p=1,我们看看怎么隐藏掉路由
$pages = new Pagination([
'totalCount' =& $totalCount,
'route' =& false,
可能你会发现分页类Pagination有一个bug,假如我们只有1页的数据,但是手动更改地址栏的page=20的时候,也会显示page=1的数据?当然,这在大部分接口API中就很让人厌烦。但是,这并非bug,而是一种友好的验证。设置validatePage=false即可避免掉该问题
$pages = new Pagination([
'totalCount' =& $totalCount,
'validatePage' =& false, ]);
最后,我们整点新花样,扩展下他这个自带的分页!别一看见扩展俩字下面的就直接不看了,只有自己学会扩展了,以后才能越来越强!怎么个扩展法呢?我们把分页组件改为上下页那种,具体参考下图做个对比吧
接下来我们就来看看右侧的效果具体是如何通过扩展LinkPager组件实现的。源码分享给大家,喜欢的拿去自己研究即可。
namespace frontend\
use yii\widgets\LinkP
use yii\helpers\H
class MLinkPager extends LinkPager
public $prevPageLabel = '&i class="fa fa-angle-left"&&/i&';
public $nextPageLabel = '&i class="fa fa-angle-right"&&/i&';
public $currentCountPageLabel = '第 {currentPage} 页 / 共 {countPage} 页';
public $currentCountPageClass = 'page-number';
public $hideOnSinglePage =
public function init () {
parent::init();
public function run () {
$pageCount = $this-&pagination-&getPageCount();
if ($pageCount & 2 && $this-&hideOnSinglePage) {
return '';
$buttons = [];
$currentPage = $this-&pagination-&getPage();
// prev page
if ($this-&prevPageLabel !== false) {
if (($page = $currentPage - 1) & 0) {
$page = 0;
$buttons[] = $this-&renderPageButton($this-&prevPageLabel, $page, $this-&prevPageCssClass, $currentPage &= 0, false);
// current page / count page
if ($this-&currentCountPageLabel !== false && $pageCount) {
$currentCountPageLabel = str_replace(['{currentPage}', '{countPage}'], [$currentPage+1, $pageCount], $this-&currentCountPageLabel);
$buttons[] = Html::tag('span', $currentCountPageLabel, array('class' =& $this-&currentCountPageClass));
// next page
if ($this-&nextPageLabel !== false) {
if (($page = $currentPage + 1) &= $pageCount - 1) {
$page = $pageCount - 1;
$buttons[] = $this-&renderPageButton($this-&nextPageLabel, $page, $this-&nextPageCssClass, $currentPage &= $pageCount - 1, false);
return Html::tag('nav', implode("\n", $buttons), $this-&options);
protected function renderPageButton($label, $page, $class, $disabled, $active)
$options = ['class' =& empty($class) ? $this-&pageCssClass : $class];
if ($active) {
Html::addCssClass($options, $this-&activePageCssClass);
if ($disabled) {
$linkOptions = $this-&linkO
$linkOptions += $
$linkOptions['data-page'] = $
return Html::a($label, $this-&pagination-&createUrl($page), $linkOptions);
如此一来,我们调用MLinkPager实现分页效果像下面这样即可
use frontend\components\MLinkP
&?= MLinkPager::widget([
'pagination' =& $pages,
]); ?&
当然,自己扩展的分页组建重在教大家如何去实现分页扩展,难免会有很多问题,如果你有好的意见或者方法,直接给我留言,咱们共同沟通交流。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具当前位置: >
> Yii框架结合sphinx,Ajax实现搜索分页功能示例Yii框架结合sphinx,Ajax实现搜索分页功能示例更新:&&&&编辑:秀楣&&&&来源:geguai&&&&人气:加载中...&&&&字号:|标签:&&&&&&&&&&&&
本文实例讲述了Yii框架sphinx,的法子。给大家供大家参考,,具体如下:
namespace backend\
use yii\web\C
use yii\data\P
use SphinxC
use yii\db\Q
use yii\widgets\LinkP
use backend\models\G
class SouController extends Controller
//显示页面
public function actionIndex()
$sou=Yii::$app-&request-&get('sou');
$p1=Yii::$app-&request-&get('p1');
$p2=Yii::$app-&request-&get('p2');
//echo $sou.$p1.$p2;
$cl = new SphinxClient();
$cl -& SetServer('127.0.0.1',9312);
$cl -& SetConnectTimeout(3);
$cl -& SetArrayResult(true);
//只搜索条件
$cl -& SetMatchMode(SPH_MATCH_ANY);
//全局扫描
$cl -& SetMatchMode(SPH_MATCH_FULLSCAN);
//设置价格(注意:创建索引时,价格属性定义为int)
if($p1&&$p2)
$cl-&SetFilterRange('price',$p1,$p2);
//搜索查询关键字
$res = $cl-&Query($sou,"mysql_goods");
$model=new Goods();
foreach ($res['matches'] as $key =& $val)
$ids[] = $val['id'];
//查询条件数据
$query = $model-&find()-&where(['id'=&$ids]);
$countQuery = clone $
$pages = new Pagination(['totalCount' =& $countQuery-&count(),'defaultPageSize'=&3]);
$models = $query-&offset($pages-&offset)
-&limit($pages-&limit)
//关键字变红
foreach($models as $k=&$v)
$models[$k]['goods_name']=str_replace("$sou","&font color='red'&$sou&/font&",$v['goods_name']);//将关键字调换成红色字体
//显示列表,分配数据
return $this-&render('index', [
'res' =& $models,
'pages' =& $pages,
'sou'=&$sou,
'p1'=&$p1,
use yii\helpers\H
use yii\widgets\ActiveF
use yii\widgets\LinkP
$form = ActiveForm::begin([
'action' =& 'index.php?r=sou/index',
'method' =& 'get'
&input type="text" value="&?php echo $sou?&"&
&input type="text" value="&?php echo $p1?&"&---&input type="text" value="&?php echo $p2?&"&
&input type="submit" value="搜索"&
&th&ID&/th&
&th&商品名称&/th&
&th&商品价格&/th&
&?php foreach($res as $key=&$v){?&
&td&&?php echo $v['id'];?&&/td&
&td&&?php echo $v['goods_name'];?&&/td&
&td&&?php echo $v['price'];?&&/td&
&?php }?&
&!--分页--&
&?= LinkPager::widget(['pagination' =& $pages]) ?&
&?php ActiveForm::end() ?&
&!--显示--&
&?php $this-&beginBlock('test2') ?&
$(document).on('click', '.pagination a', function(e)
//禁止page显示,看地址
e.preventDefault();
var href = $(this).attr('href');
$.post(href,function(msg){
$('#list').html(msg);
&?php $this-&endBlock();
$this-&registerJs($this-&blocks['test2'] , yii\web\View::POS_END)
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
分类选择您可能在找这些帮设计师节省1,085,543,232小时查看: 10243|回复: 19
Yii2.0实用功能技巧解密之——分页功能
主题帖子积分
Yii中的分页功能主要由yii\web: Linkable接口、yii\widgets: LinkPager类和yii\data: Pagination类三个组成。
yii\data: Pagination 主要功能是对分页中的参数进行设置,如当前页、每页大小、总页数,总记录数等。yii\widgets: LinkPager 主要是根据yii\data: Pagination类所提供的参数生成前台页面的分页html代码。
先在action里面生成分页对象,然后在前台的LinkPager中使用。
后台controller中:
function actionIndex()
{
& && &&&$query = Article::find()-&where(['status' =& 1]);
& && &&&$countQuery = clone $
& && &&&$pages = new Pagination(['totalCount' =& $countQuery-&count()]);
& && &&&$models = $query-&offset($pages-&offset)
& && && & -&limit($pages-&limit)
& && && & -&all();
& && &&&return $this-&render('index', [
& && && &&&'models' =& $models,
& && && &&&'pages' =& $pages,
& && &&&]);
}复制代码
前台view中:
foreach ($models as $model) {
& && &&&// display $model here
}
// display pagination
echo LinkPager::widget([
& && &&&'pagination' =& $pages,
]);复制代码
那如果要设置每页的大小或者再加排序怎么办?这个我已经对这个功能进行了封装
在基类控制器中添加:
public function getPagedRows($query,$config=[])
{
& && &&&$countQuery = clone $
& && &&&$pages=new Pagination(['totalCount' =& $countQuery-&count()]);
& && &&&if(isset($config['pageSize']))
& && &&&{
& && && && && & $pages-&setPageSize($config['pageSize'],true);
& && &&&}
& && &&&$rows = $query-&offset($pages-&offset)-&limit($pages-&limit);
& && &&&if(isset($config['order']))
& && &&&{
& && && && && & $rows = $rows-&orderBy($config['order']);
& && &&&}
& && &&&$rows = $rows-&all();
& && &&&$rowsLable='rows';
& && &&&$pagesLable='pages';
& && &&&if(isset($config['rows']))
& && &&&{
& && && && && & $rowsLable=$config['rows'];
& && &&&}
& && &&&if(isset($config['pages']))
& && &&&{
& && && && && & $pagesLable=$config['pages'];
& && &&&}
& && &&&$ret=[];
& && &&&$ret[$rowsLable]=$
& && &&&$ret[$pagesLable]=$
& && &&&return $
}复制代码
其中$config参数有:
pageSize:设置每页的大小order:数据的排序rows:返回的数组中数据对象的键名pages:返回的数组中分页对象的键名
后台使用如下:
function actionIndex()
{
& && &&&$query = Article::find()-&where(['status' =& 1]);
& && &&&//因为前台的数据对象为models,所以设置rows名称为models
& && &&&$locals = $this-&getPagedRows($query, ['order'=&'time desc', ‘pageSize’=&5, 'rows'=&'models']);
& && &&&return $this-&render('index', $locals);
}复制代码
是不是简单多了,而且由于这个功能实现在基类里面,所有的控制器都可以直接拿来用。
示例代码可查看:
主题帖子积分
新手上路, 积分 9, 距离下一级还需 91 积分
新手上路, 积分 9, 距离下一级还需 91 积分
好东西 收获
主题帖子积分
新手上路, 积分 27, 距离下一级还需 73 积分
新手上路, 积分 27, 距离下一级还需 73 积分
好东西 收获
这个当前页offset再哪儿设置
主题帖子积分
新手上路, 积分 27, 距离下一级还需 73 积分
新手上路, 积分 27, 距离下一级还需 73 积分
这个当前页offset再哪儿设置?
主题帖子积分
这个当前页offset再哪儿设置?
offset 是通过 url中的参数来获取的,参数名称为page,是在Pagination中定义的public $pageParam = 'page';复制代码
你可以自己修改
另外还可能通过public function setPage($value, $validatePage = false)复制代码来设置当前页 也就是offset
public function getPagedRows($query,$config=[])
{
& && &&&$countQuery = clone $
& && &&&$pages=new Pagination(['totalCount' =& $countQuery-&count()]);
& && &&&f(isset($config['page']))
& && &&&{
& && && && && & $pages-&setPage($config['page'],true);
& && &&&}
& && &&&if(isset($config['pageSize']))
& && &&&{
& && && && && & $pages-&setPageSize($config['pageSize'],true);
& && &&&}
& && &&&$rows = $query-&offset($pages-&offset)-&limit($pages-&limit);
& && &&&if(isset($config['order']))
& && &&&{
& && && && && & $rows = $rows-&orderBy($config['order']);
& && &&&}
& && &&&$rows = $rows-&all();
& && &&&$rowsLable='rows';
& && &&&$pagesLable='pages';
& && &&&if(isset($config['rows']))
& && &&&{
& && && && && & $rowsLable=$config['rows'];
& && &&&}
& && &&&if(isset($config['pages']))
& && &&&{
& && && && && & $pagesLable=$config['pages'];
& && &&&}
& && &&&$ret=[];
& && &&&$ret[$rowsLable]=$
& && &&&$ret[$pagesLable]=$
& && &&&return $
}复制代码
其中$config参数有:
page:当前页pageSize:设置每页的大小order:数据的排序rows:返回的数组中数据对象的键名pages:返回的数组中分页对象的键名
主题帖子积分
注册会员, 积分 104, 距离下一级还需 96 积分
注册会员, 积分 104, 距离下一级还需 96 积分
主题帖子积分
主题帖子积分
注册会员, 积分 70, 距离下一级还需 130 积分
注册会员, 积分 70, 距离下一级还需 130 积分
你好,admin! 我是Yii新手,请问上面这些control、view、前台、后台在那个目录文件里面写?不知道如何下手?谢谢!
主题帖子积分
你先把basic模板跑一下看看
主题帖子积分
中级会员, 积分 324, 距离下一级还需 176 积分
中级会员, 积分 324, 距离下一级还需 176 积分
如何统计数据条数呢
Powered by

我要回帖

更多关于 yii框架的分页 的文章

 

随机推荐