首页 > 开发 > Php > 正文

Yii中表单用法实例详解

2020-02-18 23:02:36
字体:
来源:转载
供稿:网友

本文实例讲述了Yii中表单用法。分享给大家供大家参考,具体如下:

在 Yii 中处理表单时,通常需要以下步骤:

1. 创建用于表现所要收集数据字段的模型类。
2. 创建一个控制器动作,响应表单提交。
3. 在视图脚本中创建与控制器动作相关的表单。

一、创建模型

在编写表单所需的 HTML 代码之前,我们应该先确定来自最终用户输入的数据的类型,以及这些数据应符合什么样的规则。模型类可用于记录这些信息。正如模型章节所定义的,模型是保存用户输入和验证这些输入的中心位置。

取决于使用用户所输入数据的方式,我们可以创建两种类型的模型。如果用户输入被收集、使用然后丢弃,我们应该创建一个表单模型;

如果用户的输入被收集后要保存到数据库,我们应使用一个Active Record。两种类型的模型共享同样的基类 CModel,它定义了表单所需的通用接口。

1、定义模型类

例如创建为一个表单模型:

class LoginForm extends CFormModel{public $username;public $password;public $rememberMe=false;}

LoginForm中定义了三个属性: $username, $password 和$rememberMe。他们用于保存用户输入的用户名和密码,还有用户是否想记住他的登录的选项。由于 $rememberMe 有一个默认的值false,相应的选项在初始化显示在登录表单中时将是未勾选状态。

我们将这些成员变量称为特性(attributes)而不是属性(properties),以区别于普通的属性(properties)。特性(attribute)是一个主要用于存储来自用户输入或数据库数据的属性(propertiy)。

2、声明验证规则

一旦用户提交了他的输入,模型被填充,我们就需要在使用前确保用户的输入是有效的。这是通过将用户的输入和一系列规则执行验证实现的。我们在 rules() 方法中指定这些验证规则,此方法应返回一个规则配置数组。

class LoginForm extends CFormModel{public $username;public $password;public $rememberMe=false;private $_identity;public function rules(){return array(array('username, password', 'required'), //username 和 password 为必填项array('rememberMe', 'boolean'), //rememberMe 应该是一个布尔值array('password', 'authenticate'), //password 应被验证(authenticated));}public function authenticate($attribute,$params){$this->_identity=new UserIdentity($this->username,$this->password);if(!$this->_identity->authenticate())$this->addError('password','错误的用户名或密码。');}}

rules() 返回的每个规则必须是以下格式:
代码如下:array('AttributeList', 'Validator', 'on'=>'ScenarioList', ...附加选项)
其中:

AttributeList(特性列表)是需要通过此规则验证的特性列表字符串,每个特性名字由逗号分隔;

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表