Yii课程后台核心是增删改查、状态控制、分类关联与权限隔离;依托ActiveRecord、Gii、RBAC和表单验证实现高效开发,涵盖模型设计、搜索列表、富文本集成、状态流转及权限校验。

Yii开发课程教学后台的课程业务实现,核心在于围绕课程管理的增删改查、状态控制、分类关联和权限隔离展开。用好Yii2的ActiveRecord、Gii生成器、RBAC权限系统和表单验证机制,能快速搭建稳定、可维护的课程后台。
课程数据模型与数据库设计
课程主表(course)需包含基础字段:id、title、slug、cover_image、summary、content、status(0-草稿/1-发布/2-下线)、sort_order、created_at、updated_at。建议增加 category_id(外键关联分类表)和 teacher_id(关联讲师)。使用Gii自动生成Course模型后,在rules()中定义必填、字符串长度、状态取值范围等验证规则;在attributeLabels()中配置中文字段名,便于表单和Gridview自动识别。
课程列表与搜索功能实现
在CourseController中使用yii\data\ActiveDataProvider配合查询条件构建分页列表。支持按标题模糊搜索、按状态筛选、按分类ID过滤。关键点是复写search()方法返回Query对象,在视图中用GridView渲染,并通过filterModel绑定搜索字段。例如:$query->andFilterWhere(['like', 'title', $this->title]);同时为status字段添加下拉筛选,用ArrayHelper::map生成选项。
课程编辑与富文本集成
课程详情内容(content)建议使用富文本编辑器(如CKEditor或Simditor)。在视图form中将textarea替换为widget调用,并确保模型rules()中对content字段取消html过滤(避免script被清除),但需在保存前用HtmlPurifier做白名单净化。封面图上传推荐用yii\imagine\Image处理缩略图,配合FileInput插件实现预览与多尺寸生成。
课程状态流转与操作权限控制
课程状态变更不应仅靠前端按钮,而要封装成服务方法(如CourseService::publish($id)),内部校验当前用户是否有发布权限、课程是否已存在冲突状态。结合Yii RBAC,在控制器行为中配置access规则,例如:'update' => ['@', 'role' => 'teacher'], 'delete' => ['@', 'role' => 'admin']。对敏感操作(如下线、删除)添加二次确认弹窗和操作日志记录。


















