首页
技术小册
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.2 项目实现迭代八:使用ActiveForm小部件替换添加文章视图 在Yii2框架的开发过程中,随着项目逐渐成型,我们往往需要对前端交互和表单处理进行优化,以提升用户体验和数据处理的效率。在这一章节中,我们将重点介绍如何使用Yii2内置的`ActiveForm`小部件来替换原有的添加文章视图中的表单实现。`ActiveForm`小部件不仅简化了表单的创建过程,还提供了丰富的验证、错误显示及数据绑定功能,是Yii2开发中处理表单的强大工具。 #### 7.2.1 理解ActiveForm小部件 在Yii2中,`ActiveForm`小部件是基于模型(Model)的表单处理组件,它依赖于模型的验证规则来自动处理表单验证,并将表单数据绑定到模型属性上。使用`ActiveForm`可以极大地减少代码量,提高开发效率,同时保持代码的整洁和可维护性。 #### 7.2.2 准备工作 在开始替换前,请确保你的项目中已经有一个用于添加文章的视图文件(如`views/article/create.php`),以及一个对应的模型(`Article`模型),该模型包含了所有必要的验证规则。此外,还需要确保控制器(如`ArticleController`)中有一个用于处理创建文章请求的动作(如`actionCreate`)。 #### 7.2.3 替换视图中的表单 ##### 7.2.3.1 移除旧表单代码 首先,打开你的添加文章视图文件(`views/article/create.php`),移除或注释掉原有的HTML表单代码。这些代码可能包含了一些基本的HTML `<input>`、`<select>` 或 `<textarea>` 元素,用于收集用户输入。 ##### 7.2.3.2 引入ActiveForm小部件 在视图文件的顶部,使用`use`语句引入`ActiveForm`类,以便在视图中使用它: ```php use yii\helpers\Html; use yii\widgets\ActiveForm; ``` ##### 7.2.3.3 创建ActiveForm实例 在视图文件中,使用`ActiveForm::begin()`和`ActiveForm::end()`方法来包裹你的表单内容。这两个方法分别标记了表单的开始和结束。 ```php <?php $form = ActiveForm::begin([ 'id' => 'article-form', 'options' => ['class' => 'form-horizontal'], 'fieldConfig' => [ 'template' => "{label}\n<div class=\"col-lg-10\">{input}\n{hint}\n{error}</div>", 'labelOptions' => ['class' => 'col-lg-2 control-label'], ], ]); ?> ... <?php ActiveForm::end(); ?> ``` 在上面的代码中,我们设置了表单的ID、CSS类以及字段配置的模板,以控制表单的布局和样式。 ##### 7.2.3.4 添加表单字段 在`ActiveForm::begin()`和`ActiveForm::end()`之间,使用`$form->field()`方法来创建表单字段。每个字段都自动关联到模型的一个属性上,并自动应用该属性的验证规则。 ```php <?= $form->field($model, 'title')->textInput(['maxlength' => true, 'placeholder' => '请输入文章标题']) ?> <?= $form->field($model, 'content')->textarea(['rows' => 6, 'placeholder' => '请输入文章内容']) ?> <?= $form->field($model, 'category_id')->dropDownList($categories, ['prompt' => '请选择分类']) ?> ... ``` 在上述代码中,`$model`是传递给视图的`Article`模型实例。`textInput`、`textarea`和`dropDownList`等方法分别用于创建不同类型的表单输入项。`$categories`是一个数组,用于填充分类下拉列表的选项。 #### 7.2.4 提交表单 在表单的底部,添加一个提交按钮: ```php <div class="form-group"> <div class="col-lg-offset-2 col-lg-10"> <?= Html::submitButton('提交', ['class' => 'btn btn-primary']) ?> </div> </div> ``` #### 7.2.5 控制器中的处理 确保你的控制器动作(如`actionCreate`)已经准备好接收和处理表单提交的数据。通常,这涉及到读取模型属性、进行验证,并在验证通过后保存模型到数据库。 ```php public function actionCreate() { $model = new Article(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); } return $this->render('create', [ 'model' => $model, 'categories' => $this->getCategoryOptions(), // 假设这个方法返回分类选项 ]); } ``` #### 7.2.6 验证和错误处理 `ActiveForm`小部件会自动根据模型的验证规则进行验证,并在验证失败时显示错误信息。错误信息通过`{error}`占位符在字段模板中自动渲染。 #### 7.2.7 样式和布局调整 根据需要,你可以通过CSS和JavaScript进一步调整表单的样式和布局,使其更好地融入你的网站设计中。 #### 7.2.8 总结 通过本章节的学习,我们学会了如何使用Yii2的`ActiveForm`小部件来替换原有的HTML表单,从而简化了表单的创建和验证过程。`ActiveForm`不仅提高了开发效率,还增强了表单的可用性和用户体验。在实际项目中,熟练掌握`ActiveForm`的使用是非常重要的,它将成为你处理表单数据的得力助手。 希望这一章节的内容能帮助你更好地理解和使用Yii2的`ActiveForm`小部件,并在你的项目中发挥其最大效用。
上一篇:
7.1.2 调用begin()和end()方法使用小部件ActiveForm
下一篇:
7.2.1 调用小部件ActiveForm
该分类下的相关小册推荐:
PHP合辑2-高级进阶
PHP8入门与项目实战(8)
Swoole高性能框架-SwooleWorker
Magento2后端开发高级实战
PHP8入门与项目实战(5)
HTTP权威指南
Laravel(10.x)从入门到精通(十五)
Laravel(10.x)从入门到精通(十二)
ThinkPHP项目开发实战
Workerman高性能Web框架-Webman
Yii2框架从入门到精通(上)
Magento中文全栈二次开发