首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1 PHP语言发展历史及其适合的应用领域
1.2 什么是框架
1.3 为什么要用框架开发
1.4 自定义框架
1.4.1 MVC框架模式的实现
1.4.2 入口文件
1.4.3 应用(前端控制器)
1.4.4 从自定义框架到Yii2框架
2.1 Yii简介
2.1.1 什么是Yii框架技术
2.1.2 Yii2的优点
2.1.3 应用案例
2.2 下载Yii2
2.3 运行应用
2.4 输出“Hello World”
2.5 入口文件
2.6 应用主体
2.7 MVC框架模式
2.8 Yii2框架中的控制器
2.9 Yii2框架中的视图
2.10 项目实现迭代一:渲染首页、列表页和内容页视图
3.1 布局概述
3.2 项目实现迭代二:创建并使用布局渲染首页视图
3.3 Controller类的render()方法执行流程
3.4 应用级布局
3.5 嵌套布局
3.6 项目实现迭代三:使用嵌套布局渲染“新闻中心”列表页
3.7 视图文件的存储路径
4.1 模块概述
4.2 使用Gii创建模块
4.3 模块中的资源文件
4.4 项目实现迭代四:文章管理
5.1 ActiveRecord模型概述
5.2 通过CRUD(增查改删)操作理解ActiveRecord类
5.2.1 文章表(ds_article)
5.2.2 在配置文件中初始化数据库连接
5.2.3 创建ActiveRecord模型
5.2.4 通过查询操作理解ActiveRecord类
5.2.5 通过插入和更新操作理解ActiveRecord类
5.2.6 通过删除操作理解ActiveRecord类
5.3 项目实现迭代五:首页“行业百科”数据查询
5.4 项目实现迭代六:在“文章添加”页面实现数据插入
6.1 ActiveRecord模型类的find()方法与查询执行流程
6.2 查询方法find()实例
6.2.1 实现带有逻辑运算符和比较运算符的查询
6.2.2 实现范围比较查询
6.2.3 实现模糊查询
6.3 查询构建类ActiveQuery
6.3.1 ActiveQuery成员属性简介
6.3.2 ActiveQuery成员方法简介
6.3.3 Query类where()成员方法简介
6.4 关联查询
6.5 项目实现迭代七:完成首页中的数据填充
6.5.1 实现幻灯片切换
6.5.2 实现成功案例
6.5.3 实现其他栏目的文章内容查询
当前位置:
首页>>
技术小册>>
Yii2框架从入门到精通(上)
小册名称:Yii2框架从入门到精通(上)
### 4.4 项目实现迭代四:文章管理 在Yii2框架的应用开发过程中,文章管理是一个常见且核心的功能模块,它涵盖了文章的增、删、改、查(CRUD)操作,是内容管理系统(CMS)的基石。本章节将详细阐述如何在Yii2项目中实现一个功能完备的文章管理系统,包括数据库设计、模型(Model)创建、控制器(Controller)逻辑编写、视图(View)展示以及路由(Routing)和权限控制(RBAC)的集成。 #### 4.4.1 需求分析 在设计文章管理系统之前,首先需要明确系统的功能需求。一般而言,文章管理模块应支持以下功能: 1. **文章列表展示**:显示所有文章的标题、作者、发布时间等基本信息,支持分页显示。 2. **文章新增**:提供表单供用户输入文章标题、内容、分类、标签等信息,并可选择性地添加图片或视频附件。 3. **文章编辑**:对已有文章进行修改,包括标题、内容、分类、标签及附件的更新。 4. **文章删除**:提供删除文章的功能,需考虑是否支持批量删除及删除确认。 5. **文章搜索**:支持按标题、内容、作者等字段进行搜索,提升信息检索效率。 6. **权限控制**:不同用户角色(如管理员、作者、访客)对文章的访问和操作权限应有所不同。 #### 4.4.2 数据库设计 数据库设计是构建文章管理系统的基石。以下是一个基本的数据库表结构设计示例: - **articles** 表:存储文章信息。 - id(主键,自增) - title(标题) - content(内容,可存储为文本或HTML格式) - author_id(作者ID,外键关联到users表) - category_id(分类ID,外键关联到categories表) - status(状态,如发布、草稿等) - created_at(创建时间) - updated_at(更新时间) - **users** 表:存储用户信息(假设已有)。 - id(主键,自增) - username(用户名) - password(密码,应加密存储) - ...(其他用户信息字段) - **categories** 表:存储文章分类信息。 - id(主键,自增) - name(分类名称) - ...(其他分类信息字段) #### 4.4.3 模型(Model)创建 在Yii2中,模型层主要负责数据的验证、保存和检索。我们将为`articles`、`users`和`categories`表分别创建对应的ActiveRecord模型。 ```php // 文件路径:models/Article.php namespace app\models; use Yii; use yii\db\ActiveRecord; class Article extends ActiveRecord { // 定义表名 public static function tableName() { return '{{%articles}}'; } // 关联用户模型 public function getUser() { return $this->hasOne(User::class, ['id' => 'author_id']); } // 关联分类模型 public function getCategory() { return $this->hasOne(Category::class, ['id' => 'category_id']); } // 验证规则 public function rules() { return [ [['title', 'content', 'author_id', 'category_id', 'status'], 'required'], // 其他验证规则... ]; } } ``` 类似地,为`users`和`categories`表创建相应的模型,并定义相应的关联方法和验证规则。 #### 4.4.4 控制器(Controller)逻辑编写 控制器层负责处理用户的请求并调用模型层进行数据操作,最后通过视图层展示结果。 ```php // 文件路径:controllers/ArticleController.php namespace app\controllers; use Yii; use yii\web\Controller; use app\models\Article; class ArticleController extends Controller { public function actionIndex() { $articles = Article::find()->all(); return $this->render('index', ['articles' => $articles]); } public function actionCreate() { $model = new Article(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['index']); } return $this->render('create', ['model' => $model]); } // 更新、删除、搜索等操作的方法实现... } ``` #### 4.4.5 视图(View)展示 视图层负责将控制器处理的数据以用户友好的方式展示出来。对于文章管理,我们需要为列表、新增、编辑等页面创建相应的视图文件。 - **index.php**:文章列表页面,使用`GridView`小部件展示文章数据。 - **create.php** 和 **update.php**:新增和编辑文章页面,使用`ActiveForm`小部件创建表单。 - **view.php**:查看单篇文章详情页面。 #### 4.4.6 路由(Routing)和权限控制(RBAC) - **路由**:在`config/web.php`中配置URL规则,确保用户可以通过URL访问到文章管理的各个页面。 - **权限控制**:利用Yii2内置的RBAC(基于角色的访问控制)系统,为不同用户角色分配不同的操作权限。这包括在数据库中创建角色、权限以及将权限分配给角色和用户。然后,在控制器或视图中检查当前用户是否拥有执行特定操作的权限。 #### 4.4.7 附加功能与优化 - **文章状态管理**:在文章中增加状态字段(如发布、草稿、审核中),通过状态管理控制文章的显示逻辑。 - **富文本编辑器**:集成CKEditor、Quill等富文本编辑器,提升内容编辑体验。 - **附件管理**:实现文件上传功能,支持图片、视频等多媒体附件的上传与展示。 - **SEO优化**:为文章生成友好的URL、设置Meta标签等,提升网站在搜索引擎中的排名。 - **性能优化**:通过缓存、数据库索引等方式优化系统性能,提升用户体验。 通过以上步骤,我们可以构建一个功能完备、用户体验良好的文章管理系统。在实际开发过程中,可能还需要根据具体需求进行调整和优化。
上一篇:
4.3 模块中的资源文件
下一篇:
5.1 ActiveRecord模型概述
该分类下的相关小册推荐:
剑指PHP(从入门到进阶)
PHP底层原理及源码分析
Laravel(10.x)从入门到精通(三)
HTTP权威指南
Laravel(10.x)从入门到精通(十五)
PHP8入门与项目实战(7)
Yii2框架从入门到精通(中)
全面掌握Magento2-从配置到优化
PHP8入门与项目实战(1)
Yii2框架从入门到精通(下)
Laravel(10.x)从入门到精通(四)
PHP合辑1-基础入门