首页
技术小册
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框架从入门到精通(中)
### 12.6.5 用户列表 在Web应用程序中,用户管理是一个核心功能,它涵盖了用户的创建、更新、删除以及查看等操作。其中,用户列表页面(User List)是管理员或特定权限用户查看系统中所有用户信息的界面,对于维护系统的用户数据至关重要。在Yii2框架中,实现一个高效、可维护的用户列表页面,不仅需要良好的数据库设计,还需要利用Yii2的MVC(Model-View-Controller)架构、ActiveRecord模式、以及可能的GridView或ListView等组件来优化展示。 #### 12.6.5.1 数据库设计 在构建用户列表之前,确保你的数据库中有合适的用户表。通常,用户表(假设表名为`user`)会包含以下基本字段: - `id`:用户唯一标识符,通常为主键,自增。 - `username`:用户名,用于登录。 - `email`:用户的电子邮件地址。 - `password_hash`:用户密码的加密哈希值。 - `status`:用户状态,如激活、未激活、禁用等。 - `created_at`:用户创建时间。 - `updated_at`:用户信息最后更新时间。 此外,根据应用需求,还可能包括更多字段,如姓名、电话、地址等个人信息。 #### 12.6.5.2 模型(Model) 在Yii2中,每个数据库表对应一个模型类,用于表示和操作表中的数据。对于用户表,你需要创建一个`User`模型类,通常位于`models`目录下。这个模型类应该继承自`\yii\db\ActiveRecord`,以便利用ActiveRecord模式提供的方法如`find()`, `save()`, `delete()`等。 ```php namespace app\models; use Yii; use yii\db\ActiveRecord; class User extends ActiveRecord { /** * @return \yii\db\ActiveQuery */ public static function tableName() { return '{{%user}}'; // 使用表前缀时需注意 } // 其他规则、场景定义等 } ``` #### 12.6.5.3 控制器(Controller) 控制器负责处理用户请求并调用模型与视图来展示数据。对于用户列表,你需要在相应的控制器(比如`UserController`)中创建一个动作(action),比如`index`,用于渲染用户列表页面。 ```php namespace app\controllers; use Yii; use yii\web\Controller; use app\models\User; class UserController extends Controller { public function actionIndex() { $searchModel = new User(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); return $this->render('index', [ 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, ]); } } ``` 注意,这里假设`User`模型实现了搜索功能(通过`search`方法),该方法通常用于处理查询参数,构建查询条件,并返回一个`ActiveDataProvider`实例,后者被用于在视图中展示数据。 #### 12.6.5.4 视图(View) 视图层负责数据的展示。对于用户列表,你可以使用Yii2的GridView组件来高效展示用户数据。GridView提供了丰富的配置选项,如分页、排序、过滤等,非常适合用于展示列表数据。 在`views/user/index.php`文件中,你可以这样使用GridView: ```php use yii\grid\GridView; use yii\helpers\Html; /* @var $this yii\web\View */ /* @var $searchModel app\models\User */ /* @var $dataProvider yii\data\ActiveDataProvider */ $this->title = '用户列表'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="user-index"> <h1><?= Html::encode($this->title) ?></h1> <?php // echo $this->render('_search', ['model' => $searchModel]); ?> <?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], 'id', 'username', 'email:email', [ 'attribute' => 'status', 'value' => function ($model) { return $model->getStatusLabel(); // 假设User模型中有getStatusLabel()方法 }, 'filter' => \app\models\User::getStatuses(), // 假设User模型中有getStatuses()方法返回状态数组 ], 'created_at:datetime', ['class' => 'yii\grid\ActionColumn', 'template' => '{view} {update} {delete}', 'buttons' => [ 'view' => function ($url, $model, $key) { return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', $url, [ 'title' => Yii::t('app', 'View'), ]); }, // ... 其他按钮定义 ], ], ], ]); ?> </div> ``` 在这个视图中,我们定义了GridView的`dataProvider`和`filterModel`,分别用于数据展示和过滤。`columns`数组定义了每一列的显示内容,包括ID、用户名、邮箱、状态(通过自定义函数和过滤器显示),以及创建时间。同时,我们还使用了`ActionColumn`来添加操作按钮,如查看、更新和删除用户。 #### 12.6.5.5 权限与安全性 在展示用户列表时,务必注意权限控制和数据安全性。确保只有具有相应权限的用户才能访问此页面,并且敏感信息(如密码哈希)不应直接展示在列表中。你可能需要使用Yii2的RBAC(Role-Based Access Control)或ACL(Access Control List)来实现权限控制。 #### 12.6.5.6 总结 用户列表是Web应用中常见的功能之一,它为用户管理提供了基础。在Yii2框架中,通过合理设计数据库、利用ActiveRecord模型、结合控制器逻辑和GridView视图组件,可以高效地实现用户列表的展示与操作。同时,注重权限控制和数据安全性是开发过程中不可忽视的重要方面。
上一篇:
12.6.4 角色列表
下一篇:
12.6.6 菜单列表
该分类下的相关小册推荐:
PHP面试指南
PHP合辑3-数组函数
Yii2框架从入门到精通(下)
Laravel(10.x)从入门到精通(六)
PHP程序员的设计模式
PHP8入门与项目实战(4)
PHP合辑1-基础入门
Magento零基础到架构师(系统管理)
Laravel(10.x)从入门到精通(二)
Laravel(10.x)从入门到精通(十四)
全栈工程师修炼指南
PHP高并发秒杀入门与实战