首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
7.1 调用小部件的两种方式
7.1.1 调用widget()方法使用小部件DatePicker
7.1.2 调用begin()和end()方法使用小部件ActiveForm
7.2 项目实现迭代八:使用ActiveForm小部件替换添加文章视图
7.2.1 调用小部件ActiveForm
7.2.2 “文章标题”文本输入框
7.2.3 “文章栏目”下拉列表框
7.2.4 “文章图片”上传文件输入框
7.2.5 “内容”文本输入域
7.3 自定义小部件
7.3.1 继承Widget
7.3.2 自定义小部件的MVC结构
7.4 项目实现迭代九:自定义首页幻灯片小部件
7.5 项目实现迭代十:分页显示列表页
7.5.1 分页组件Pagination
7.5.2 新闻中心列表页实现数据填充
7.5.3 分页的超链接列表小部件LinkPager
8.1 初识资源包类
8.2 Yii2框架资源管理代码分析
8.2.1 视图中注册资源包类
8.2.2 注册资源文件
8.2.3 输出缓冲区的数据
8.3 AssetBundle类的成员属性
8.4 项目实现迭代十一:本书配套项目实现前端资源管理
8.4.1 实现首页前端资源管理
8.4.2 实现新闻中心列表页前端资源管理
9.1 模型中编写验证规则
9.2 控制器中安全赋值
9.3 控制器中触发验证
9.4 视图中提取错误信息
9.5 项目实现迭代十二:完成“添加文章”页面中的模型验证
10.1 AJAX简介
10.2 传统的JavaScript实现AJAX验证
10.2.1 创建AJAX引擎XMLHttpRequest对象
10.2.2 创建HTTP请求
10.2.3 设置响应HTTP请求状态变化的方法
10.2.4 设置获取服务器返回数据的语句
10.2.5 发送HTTP请求
10.3 jQuery实现AJAX验证
10.4 项目实现迭代十三:完成“添加用户”页面的AJAX验证
11.1 用户登录-表单模型
11.2 用户登录-客户端验证
11.2.1 ActiveForm实现客户端验证代码分析
11.2.2 项目实现迭代十四:完成登录页面的客户端验证
11.3 模型中的自定义方法作为rules()验证器
11.4 用于验证用户名和密码的身份类UserIdentity
11.5 项目实现迭代十五:完成用户登录
11.6 保存用户登录状态的yii\web\User类
12.1 访问控制技术综述
12.2 RBAC简介
12.3 RBAC需求分析及功能概述
12.4 项目实现迭代十六:最简方式实现RBAC
12.4.1 数据库设计
12.4.2 用户管理
12.4.3 角色管理
12.4.4 权限管理
12.4.5 用户—角色配置管理
12.4.6 角色—权限配置管理
12.5 项目实现迭代十七:使用yii\rbac\DbManager实现 RBAC
12.5.1 基本概念
12.5.2 用户管理
12.5.3 角色管理
12.5.4 权限管理
12.5.5 权限管理系统验证
12.6 项目实现迭代十八:使用yii2-admin扩展实现RBAC
12.6.1 配置
12.6.2 使用的数据库表
12.6.3 路由列表
12.6.4 角色列表
12.6.5 用户列表
12.6.6 菜单列表
12.6.7 集成AdminLTE后台主题及菜单展示
12.6.8 基于存取控制过滤器(ACF)的用户登录页面
当前位置:
首页>>
技术小册>>
Yii2框架从入门到精通(中)
小册名称:Yii2框架从入门到精通(中)
### 7.5 项目实现迭代十:分页显示列表页 在Web开发中,随着数据量的不断增长,如何高效地展示这些信息给用户成为了一个重要的议题。分页显示是一种常见且有效的解决方案,它允许用户按批次查看数据,既提升了用户体验,也减轻了服务器的负担。在Yii2框架中,实现分页功能既简单又强大,本章节将详细介绍如何在Yii2项目中实现列表页的分页显示。 #### 7.5.1 理解分页原理 分页的基本原理是将数据集合分割成多个子集,每次只加载并显示一个子集给用户。在Yii2中,这一过程通常通过`yii\data\Pagination`类和`yii\widgets\LinkPager`(或`yii\widgets\ListView`、`yii\grid\GridView`等)来实现。`Pagination`类负责处理分页逻辑,如计算总页数、当前页码等;而`LinkPager`等小部件则负责生成分页链接供用户点击。 #### 7.5.2 准备数据模型 在实现分页之前,确保你有一个合适的数据模型(Model)和数据库表。假设我们有一个`Post`模型,对应数据库中的`post`表,该表存储了文章信息。 ```php // Post模型示例 namespace app\models; use yii\db\ActiveRecord; class Post extends ActiveRecord { // 覆盖表名 public static function tableName() { return '{{%post}}'; } // 其他模型方法... } ``` #### 7.5.3 使用Pagination类 在控制器中,使用`Pagination`类来设置分页参数,并查询出当前页的数据。 ```php // 控制器中的action方法示例 namespace app\controllers; use Yii; use yii\web\Controller; use app\models\Post; use yii\data\Pagination; class PostController extends Controller { public function actionIndex() { $query = Post::find(); // 获取总记录数 $count = $query->count(); // 创建分页对象 $pagination = new Pagination(['totalCount' => $count]); // 设置每页显示的数量 $pagination->defaultPageSize = 10; // 使用分页对象修改查询,以获取当前页的数据 $posts = $query->offset($pagination->offset) ->limit($pagination->limit) ->all(); // 将数据和分页对象传递给视图 return $this->render('index', [ 'posts' => $posts, 'pagination' => $pagination, ]); } } ``` #### 7.5.4 在视图中显示分页链接 在视图文件中,使用`LinkPager`小部件来显示分页链接。 ```php <!-- 视图文件 app/views/post/index.php --> <?php use yii\widgets\LinkPager; ?> <h1>文章列表</h1> <ul> <?php foreach ($posts as $post): ?> <li><?= Html::encode($post->title) ?></li> <?php endforeach; ?> </ul> <?= LinkPager::widget([ 'pagination' => $pagination, ]); ?> ``` `LinkPager`小部件会自动根据`$pagination`对象生成分页链接。你可以通过配置`LinkPager`的属性来自定义分页链接的样式,比如`options`用于设置整个分页导航的HTML属性,`linkOptions`用于设置每个分页链接的HTML属性等。 #### 7.5.5 自定义分页样式 Yii2允许你通过CSS和JavaScript来自定义分页链接的样式和行为。你可以直接在视图中通过`<style>`标签或外部CSS文件来定义样式,也可以通过JavaScript来增强分页的交互性。 例如,你可以使用Bootstrap的CSS类来美化分页链接: ```php <?= LinkPager::widget([ 'pagination' => $pagination, 'options' => ['class' => 'pagination pagination-sm'], 'linkOptions' => ['class' => 'page-link'], ]); ?> ``` 然后,确保你的项目中已经包含了Bootstrap的CSS文件。 #### 7.5.6 性能优化 虽然分页本身已经帮助提高了性能,但在处理大量数据时,仍有一些额外的优化措施可以采取: - **索引优化**:确保你的数据库表上有适当的索引,特别是用于查询条件的字段。 - **缓存**:利用Yii2的缓存机制,缓存查询结果或分页对象,减少数据库查询次数。 - **懒加载**:对于关联数据,考虑使用懒加载而非饥渴加载,以减少不必要的查询。 #### 7.5.7 注意事项 - 分页时,确保你的查询条件是固定的,否则可能会导致数据在不同页之间“跳跃”。 - 考虑到SEO和用户体验,合理设置每页显示的条目数。 - 分页参数(如当前页码)通常通过GET请求传递,确保你的应用能够正确处理这些参数。 #### 结语 通过本章节的学习,你应该已经掌握了在Yii2框架中实现列表页分页显示的基本方法。分页功能是Web开发中不可或缺的一部分,它不仅能够提升用户体验,还能有效管理数据展示。希望你在实践中能够灵活运用这些知识,不断优化你的Web应用。
上一篇:
7.4 项目实现迭代九:自定义首页幻灯片小部件
下一篇:
7.5.1 分页组件Pagination
该分类下的相关小册推荐:
Laravel(10.x)从入门到精通(十一)
Swoole高性能框架-Hyperf
Magento零基础到架构师(安装篇)
PHP合辑2-高级进阶
PHP8入门与项目实战(8)
Laravel(10.x)从入门到精通(十五)
Laravel(10.x)从入门到精通(十九)
PHP8入门与项目实战(3)
PHP8入门与项目实战(4)
Yii2框架从入门到精通(上)
PHP8入门与项目实战(7)
PHP安全之道