首页
技术小册
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.1 调用小部件ActiveForm 在Yii2框架中,`ActiveForm`是一个非常强大且常用的小部件,它极大地简化了表单的创建过程,使得数据验证、字段渲染、错误信息显示等任务变得简单而直观。`ActiveForm`小部件基于模型(Model)工作,利用模型中的验证规则来自动进行客户端和服务器端的验证,从而提升了用户体验和数据安全性。本章节将详细介绍如何在Yii2项目中调用`ActiveForm`小部件,并通过实例展示其用法。 #### 7.2.1.1 ActiveForm基础概念 在深入探讨`ActiveForm`的具体使用之前,有必要先理解其背后的几个核心概念: - **模型(Model)**:`ActiveForm`通常与模型对象绑定,模型中的属性对应于表单的输入字段,而模型的验证规则则定义了这些字段的合法性要求。 - **视图(View)**:在Yii2中,视图文件用于展示用户界面,包括表单。`ActiveForm`小部件通常在视图文件中被调用,并渲染出表单的HTML结构。 - **字段(Field)**:表单由多个字段组成,每个字段映射到模型的一个属性上。`ActiveForm`提供了多种方法来自定义字段的渲染方式。 - **验证(Validation)**:`ActiveForm`利用模型中的验证规则进行客户端和服务器端的验证,确保用户输入的数据符合预定义的要求。 #### 7.2.1.2 调用ActiveForm小部件 在视图文件中调用`ActiveForm`小部件通常遵循以下步骤: 1. **使用`use`语句引入命名空间**: ```php use yii\widgets\ActiveForm; ``` 2. **创建ActiveForm实例**: 在视图文件中,使用`ActiveForm::begin()`和`ActiveForm::end()`方法包裹表单内容,以创建`ActiveForm`实例。这两个方法分别标记了表单的开始和结束。 ```php <?php $form = ActiveForm::begin([ 'id' => 'my-form', 'options' => ['class' => 'form-horizontal'], // 其他配置项... ]); ?> <!-- 表单内容 --> <?php ActiveForm::end(); ?> ``` 其中,`begin()`方法接受一个数组作为参数,允许你配置表单的各种属性,如`id`、`class`、`action`等。 3. **添加表单字段**: 在`ActiveForm::begin()`和`ActiveForm::end()`之间,使用`$form->field()`方法来添加表单字段。这个方法接受模型的一个属性名作为参数,并返回一个字段对象,用于进一步配置和渲染该字段。 ```php <?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?> <?= $form->field($model, 'email')->input('email') ?> ``` 在上述代码中,`$model`是绑定到表单的模型实例,`'username'`和`'email'`是模型中的属性名。`textInput()`和`input('email')`分别指定了字段的输入类型。`textInput()`是`ActiveField`类提供的一个便捷方法,用于渲染文本输入框;而`input()`方法则允许你指定更具体的HTML输入类型,如`'email'`。 4. **配置验证规则**: 验证规则需要在模型类中定义,但这里简要说明它们如何与`ActiveForm`协作。在模型类中,使用`rules()`方法返回一个包含验证规则的数组。这些规则定义了模型属性的验证逻辑,并在表单提交时自动应用。 ```php public function rules() { return [ [['username', 'email'], 'required'], ['email', 'email'], // 其他验证规则... ]; } ``` 5. **提交表单**: 在表单的HTML结构中,添加一个提交按钮。`ActiveForm`会自动处理表单的提交事件,并触发模型的验证逻辑。 ```php <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?> ``` #### 7.2.1.3 进阶用法 - **自定义字段模板**: `ActiveForm`允许你通过配置`fieldConfig`属性来自定义字段的模板。这包括标签、输入元素、错误信息的渲染方式等。 - **使用Ajax进行异步验证**: Yii2的`ActiveForm`支持Ajax验证,允许在用户填写表单时即时反馈验证结果,无需提交整个表单。这通过配置模型的验证规则,并在表单视图中启用Ajax验证来实现。 - **动态添加和删除表单字段**: 在某些情况下,你可能需要动态地添加或删除表单字段。这通常通过JavaScript和Yii2的客户端脚本支持来实现,确保动态添加的字段也能正确地进行验证。 - **文件上传**: `ActiveForm`也支持文件上传,通过在表单字段中使用`fileInput()`方法并配置相应的模型属性为文件上传类型即可。 #### 7.2.1.4 实战案例 假设你正在开发一个用户注册功能,需要收集用户的用户名、电子邮件和密码。以下是一个简化的视图文件示例,展示了如何使用`ActiveForm`来实现这一功能: ```php <?php use yii\helpers\Html; use yii\widgets\ActiveForm; /* @var $this yii\web\View */ /* @var $model app\models\User */ /* @var $form yii\widgets\ActiveForm */ $this->title = 'Register'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="user-register"> <h1><?= Html::encode($this->title) ?></h1> <?php $form = ActiveForm::begin([ 'id' => 'registration-form', 'options' => ['class' => 'form-horizontal'], ]); ?> <?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?> <?= $form->field($model, 'email')->input('email') ?> <?= $form->field($model, 'password')->passwordInput() ?> <div class="form-group"> <div class="col-lg-offset-1 col-lg-11"> <?= Html::submitButton('Register', ['class' => 'btn btn-primary']) ?> </div> </div> <?php ActiveForm::end(); ?> </div> ``` 在这个例子中,我们创建了一个用于用户注册的表单,表单包含三个字段:用户名、电子邮件和密码。通过`ActiveForm`的便捷方法,我们很容易地实现了字段的渲染和表单的提交。同时,由于`$model`已经绑定了相应的验证规则,表单在提交时会自动进行验证,确保用户输入的数据符合要求。 ### 结语 `ActiveForm`小部件是Yii2框架中处理表单的强大工具,它通过与模型的无缝集成,极大地简化了表单的创建和验证过程。通过掌握`ActiveForm`的基本用法和进阶技巧,你可以轻松地构建出既美观又功能强大的表单界面。希望本章节的内容能够帮助你更好地理解和使用Yii2中的`ActiveForm`小部件。
上一篇:
7.2 项目实现迭代八:使用ActiveForm小部件替换添加文章视图
下一篇:
7.2.2 “文章标题”文本输入框
该分类下的相关小册推荐:
HTTP权威指南
Yii2框架从入门到精通(下)
Shopify应用实战开发
Laravel(10.x)从入门到精通(九)
Laravel(10.x)从入门到精通(十三)
Laravel(10.x)从入门到精通(十八)
Laravel(10.x)从入门到精通(十四)
PHP8入门与项目实战(8)
PHP8入门与项目实战(6)
PHP安全之道
Laravel(10.x)从入门到精通(十六)
Magento零基础到架构师(安装篇)