Yii 框架 CActiveForm 组件详解
Yii 框架是许多 Web 开发梦寐以求的东西,而 CActiveForm 正是 Yii 框架中一个非常重要的组件。在本文中,我们将详细介绍 CActiveForm 的使用方法和特性。
**CActiveForm 组件简介**
CActiveForm 是 Yii 框架中一个专门用于创建与数据模型相关联的表单的组件。它继承自 CWidget,因此需要实现 CWidget 的 init() 和 run() 方法,同时它也实现了一些自己的封装方法。CActiveForm 的一个非常重要的特性就是它支持 Ajax 校验。
**Ajax 校验**
我们可以设置 CActiveForm 的 enableAjaxValidation 属性为 true 来启动 Ajax 校验。例如,当用户在 input 框中输入一些值后就会触发 Ajax 校验。CActiveForm 会向服务器提交 Ajax 请求,用来校验用户当前输入的值。服务器的校验一般是调用模型类 Model 的 validate() 方法。如果校验失败,相对应的错误信息将会被返回并显示给用户。即使用户在浏览器禁用 JavaScript,他也会通过整个页面的提交自动回滚到传统的页面验证。
**客户端状态**
在客户端,Yii 认为 input 框可以存在四个状态:初始化、校验、错误和成功。为了区分这些状态,CActiveForm 自动指定了不同的 CSS 样式给包含此 input 框的 HTML element。默认情况下,这些 CSS 样式类的名字为:validating、error、success。当然我们可以使用 CActiveForm 的 options 属性去自定义他们。
**提交和校验**
CActiveForm 的提交和校验是基于 Ajax 模式的。如果你的表单中有很大量的数据需要提交,那么这种 Ajax 模式的提交可能就不那么好了。这种情况下,你可以设计自己轻量级的 Ajax 校验。
**使用 CActiveForm 实现 Ajax 校验**
使用 Yii 对 jQuery 的支持,我们可以使用 CActiveForm 来做 Ajax 校验。我们需要使用两个 JS 库:jquery.js 和 jquery.yiiactiveform.js。他们的位置在工程根目录下:assets\5ce53e17\ 文件夹中。不用担心,这些 JS 库 Yii 会自动发布到你的工程中。
**模型类**
首先我们来看我们的模型类,这里我们使用 CFormModel:
```
class LoginForm extends CFormModel
{
public $username;
public $password;
public function rules()
{
return array(
array('username, password', 'required'),
// ...
);
}
}
```
在上面的例子中,我们定义了一个 LoginForm 模型类,它继承自 CFormModel。我们定义了两个属性:username 和 password,并且定义了一个 rules() 方法来指定校验规则。
**结论**
CActiveForm 是 Yii 框架中一个非常重要的组件,它提供了一些方法来方便地创建与数据模型相关联的表单。它支持 Ajax 校验,可以自动指定不同的 CSS 样式给包含此 input 框的 HTML element。使用 CActiveForm,我们可以轻松地实现 Ajax 校验,并且可以自定义错误信息的显示方式。