首页
技术小册
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框架从入门到精通(上)
### 5.4 项目实现迭代六:在“文章添加”页面实现数据插入 在Yii2框架的项目开发过程中,实现数据的增删改查(CRUD)是构建动态网站或应用程序的基础。本章节将聚焦于“文章添加”功能的实现,即如何在Yii2项目中创建一个表单页面,允许用户输入文章信息,并将这些数据保存到数据库中。我们将通过详细步骤讲解如何配置控制器、模型、视图以及数据库迁移,来完成这一功能的开发。 #### 5.4.1 准备工作 在开始编码之前,请确保你的Yii2项目已经正确设置,并且已经创建了用于存储文章数据的数据库表。假设我们已经有一个名为`article`的表,包含字段如`id`(主键,自增)、`title`(标题)、`content`(内容)、`status`(状态,例如发布或草稿)和`created_at`(创建时间)等。 #### 5.4.2 创建模型 首先,我们需要一个与`article`表对应的模型类。在`models`目录下创建一个名为`Article.php`的PHP文件,并编写如下代码: ```php <?php namespace app\models; use Yii\Db\ActiveRecord; class Article extends ActiveRecord { // 关联数据库表 public static function tableName() { return '{{%article}}'; } // 验证规则 public function rules() { return [ [['title', 'content'], 'required'], ['title', 'string', 'max' => 255], ['content', 'string'], ['status', 'integer'], ]; } // 场景定义 public function scenarios() { $scenarios = parent::scenarios(); $scenarios['create'] = ['title', 'content', 'status']; return $scenarios; } } ``` 在这个模型中,我们定义了与`article`表的关联、数据验证规则以及特定的使用场景(在本例中为`create`)。 #### 5.4.3 创建控制器 接下来,在`controllers`目录下创建一个用于处理文章相关操作的控制器`ArticleController.php`,并添加`actionCreate`方法来处理文章添加的逻辑: ```php <?php namespace app\controllers; use Yii; use yii\web\Controller; use app\models\Article; class ArticleController extends Controller { public function actionCreate() { $model = new Article(); if ($model->load(Yii::$app->request->post()) && $model->save()) { Yii::$app->session->setFlash('success', '文章添加成功!'); return $this->redirect(['index']); // 假设有一个index动作显示文章列表 } return $this->render('create', [ 'model' => $model, ]); } } ``` 在这个控制器中,我们首先实例化了一个`Article`模型对象。然后,使用`load()`方法从POST请求中加载数据到模型中,并尝试使用`save()`方法保存这些数据到数据库。如果保存成功,则设置会话消息并重定向到文章列表页面;如果失败,则渲染`create`视图,并将模型对象传递给视图以便显示表单和错误信息。 #### 5.4.4 创建视图 现在,在`views/article`目录下创建一个名为`create.php`的视图文件,用于展示文章添加表单: ```php <?php use yii\helpers\Html; use yii\widgets\ActiveForm; /* @var $this yii\web\View */ /* @var $model app\models\Article */ /* @var $form yii\widgets\ActiveForm */ ?> <div class="article-create"> <h1>添加文章</h1> <?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?> <?= $form->field($model, 'content')->textarea(['rows' => 6]) ?> <?= $form->field($model, 'status')->dropDownList([ 0 => '草稿', 1 => '发布', ], ['prompt' => '请选择状态']) ?> <div class="form-group"> <?= Html::submitButton('提交', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?> </div> ``` 在这个视图中,我们使用了Yii2的`ActiveForm`和`Html`助手类来创建表单元素。`$form->field()`方法用于生成带有标签、输入字段和验证错误的表单项。`$model`对象与表单绑定,允许Yii2自动处理数据验证和填充。 #### 5.4.5 配置路由 最后,确保你的URL管理器能够识别到`ArticleController`的`create`动作。通常,在`config/web.php`的`urlManager`组件中配置路由规则,但Yii2也支持通过控制器名/动作名的方式直接访问(如果启用了`enablePrettyUrl`和配置了`.htaccess`文件)。 ```php // config/web.php 示例路由配置 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ // 其他路由规则... 'article/create' => 'article/create', // 可选配置,具体取决于你的URL管理策略 ], ], ``` #### 5.4.6 测试功能 完成以上步骤后,通过浏览器访问文章添加页面的URL(通常是`http://yourproject.com/article/create`),你应该能看到一个包含标题、内容、状态选择框和提交按钮的表单。填写表单并提交后,如果一切配置正确,数据将被保存到数据库中,并且浏览器将重定向到文章列表页面(或根据`actionCreate`方法中的重定向逻辑进行跳转),同时显示添加成功的消息。 ### 总结 本章节详细介绍了在Yii2框架中实现“文章添加”功能的完整流程,包括模型、控制器、视图的创建以及路由的配置。通过这一迭代,你的Yii2项目已经具备了处理用户输入并存储到数据库的基本能力,为后续的功能开发奠定了坚实的基础。记得在开发过程中不断测试,确保每个功能都按预期工作。
上一篇:
5.3 项目实现迭代五:首页“行业百科”数据查询
下一篇:
6.1 ActiveRecord模型类的find()方法与查询执行流程
该分类下的相关小册推荐:
经典设计模式PHP版
PHP8入门与项目实战(1)
PHP8入门与项目实战(5)
Laravel(10.x)从入门到精通(七)
ThinkPHP项目开发实战
Laravel(10.x)从入门到精通(九)
Laravel(10.x)从入门到精通(四)
全面掌握Magento2-从配置到优化
全面构建Magento2电商系统
Laravel(10.x)从入门到精通(十)
PHP8入门与项目实战(4)
Laravel(10.x)从入门到精通(十四)