包 | form |
---|---|
类层次 | class QForm_Element |
版本 | $Id: element.php 2401 2009-04-07 03:50:08Z dualface $ |
QForm_Element 类封装了表单中的一个值元素
属性 | 类型 | 描述 | 定义于 |
---|---|---|---|
$_attrs | array | 属性值 | QForm_Element |
$_owner | QForm_Group | 该元素的所有者 | QForm_Element |
$_unfiltered_value | mixed | 未过滤的值 | QForm_Element |
$_filters | array | 过滤器链 | QForm_Element |
$_validations | array | 验证规则 | QForm_Element |
$_is_valid | boolean | 数据的验证结果 | QForm_Element |
$_error_msg | string | 验证失败的信息 | QForm_Element |
$_locked | boolean | 元素是否锁定,锁定元素不接受 import 和validate 赋值 | QForm_Element |
方法 | 描述 | 定义于 |
---|---|---|
__construct() | 构造函数 | QForm_Element |
lock() | 锁定元素 | QForm_Element |
unlock() | 元素解锁 | QForm_Element |
__get() | 魔法方法,以便通过对象属性直接访问元素的属性值 | QForm_Element |
__set() | 魔法方法,以便通过指定对象属性的方式来修改元素的属性值 | QForm_Element |
get() | 获得属性值,如果属性不存在返回 $default 参数指定的默认值 | QForm_Element |
set() | 修改属性值 | QForm_Element |
dataBinding() | 确定数据绑定状态 | QForm_Element |
enableDataBinding() | 修改数据绑定状态 | QForm_Element |
nestedName() | 返回群组的嵌套名 | QForm_Element |
changeNestedName() | 设置嵌套名 | QForm_Element |
owner() | 返回元素的所有者 | QForm_Element |
attrs() | 返回所有不是以“_”开头的属性的值 | QForm_Element |
allAttrs() | 返回所有属性的值 | QForm_Element |
add() | 调用该元素所属群组的 add() 方法,以便在连贯接口中连续添加元素 | QForm_Element |
isGroup() | 指示该元素是否是一个群组 | QForm_Element |
addFilters() | 添加过滤器 | QForm_Element |
addValidations() | 添加验证规则 | QForm_Element |
cleanValidations() | 清除该元素的所有验证规则 | QForm_Element |
import() | 导入数据,但不进行过滤和验证 | QForm_Element |
validate() | 导入数据后进行过滤,并返回验证结果 | QForm_Element |
isValid() | 指示表单元素的值是否有效 | QForm_Element |
invalidate() | 设置一个元素为无效状态,以及错误消息 | QForm_Element |
errorMsg() | 返回验证错误信息 | QForm_Element |
value() | 获得表单元素的值 | QForm_Element |
unfilteredValue() | 返回未过滤的值 | QForm_Element |
属性值
该元素的所有者
未过滤的值
过滤器链
验证规则
数据的验证结果
验证失败的信息
元素是否锁定,锁定元素不接受 import 和validate 赋值
public void __construct($id, $attrs, $owner)
$id | string | 元素ID |
$attrs | array | 属性 |
$owner | QForm_Group | |
{return} |
构造函数
public QForm_Element lock()
锁定元素
public QForm_Element unlock()
元素解锁
public mixed __get($attr)
$attr | string | |
{return} | mixed |
魔法方法,以便通过对象属性直接访问元素的属性值
echo $element->title;
public void __set($attr, $value)
$attr | string | 属性名 |
$value | mixed | 属性值 |
{return} |
魔法方法,以便通过指定对象属性的方式来修改元素的属性值
public mixed get($attr, $default)
$attr | string | 属性名 |
$default | mixed | 默认值 |
{return} | mixed | 属性值 |
获得属性值,如果属性不存在返回 $default 参数指定的默认值
public QForm_Element set($attr, $value)
$attr | string | 属性名 |
$value | mixed | 属性值 |
{return} | QForm_Element |
修改属性值
public boolean dataBinding()
确定数据绑定状态
public QForm_Element enableDataBinding($enabled)
$enabled | boolean | |
{return} | QForm_Element |
修改数据绑定状态
public string nestedName()
返回群组的嵌套名
public QForm_Element changeNestedName($name)
$name | string | |
{return} | QForm_Element |
设置嵌套名
public QForm_Group owner()
返回元素的所有者
public array attrs()
返回所有不是以“_”开头的属性的值
public array allAttrs()
返回所有属性的值
public QForm_Element add($type, $id, $attrs)
$type | enum | |
$id | string | |
$attrs | array | |
{return} | QForm_Element |
调用该元素所属群组的 add() 方法,以便在连贯接口中连续添加元素
public boolean isGroup()
指示该元素是否是一个群组
public QForm_Element addFilters($filters)
$filters | string|array | 要添加的过滤器 |
{return} | QForm_Element | 返回元素对象本身,实现连贯接口 |
添加过滤器
多个过滤器可以使用以“,”分割的字符串来表示:
$element->addFilters('trim, strtolower');
或者以包含多个过滤器名的数组表示:
$element->addFilters(array('trim', 'strtolower'));
如果是需要附加参数的过滤器 ,则必须采用下面的格式:
$element->addFilters(array( array('substr', 0, 5), 'strtolower', ));
public QForm_Element addValidations($validations)
$validations | mixed | 要添加的验证规则 |
{return} | QForm_Element | 返回元素对象本身,实现连贯接口 |
添加验证规则
每一个验证规则是一个数组,可以采用两种方式添加:
$element->addValidations('max_length', 5, '不能超过5个字符'); // 或者 $element->addValidations(array('max_length', 5, '不能超过5个字符'));
如果要添加一个 callback 方法作为验证规则,必须这样写:
$element->addValidations(array($obj, 'method_name'), $args, 'error_message'));
如果要一次性添加多个验证规则,需要使用二维数组:
$element->addValidations(array( array('min', 3, '不能小于3'), array('max', 9, '不能大于9'), ));
如果要将 ActiveRecord 模型的验证规则添加给元素,可以使用:
// 将 Post 模型中与该表单元素同名属性的验证规则添加到表单元素中 $element->addValidations(Post::meta()); // 或者将指定属性的验证规则添加到表单元素中 $element->addValidations(Post::meta(), 'propname');
public QForm_Element cleanValidations()
清除该元素的所有验证规则
public QForm_Element import($data, $parent_data)
$data | mixed | |
$parent_data | ||
{return} | QForm_Element |
导入数据,但不进行过滤和验证
public boolean validate($data, $failed)
$data | mixed | 要导入并验证的数据 |
$failed | array | 保存验证失败的信息 |
{return} | boolean | 验证结果 |
导入数据后进行过滤,并返回验证结果
通常调用 QForm 对象的 validate() 方法一次性导入整个表单的数据。
public boolean isValid()
指示表单元素的值是否有效
public QForm_Element invalidate($msg)
$msg | string|array | 错误消息,如果有多个可以用数组 |
{return} | QForm_Element | 返回元素对象本身,实现连贯接口 |
设置一个元素为无效状态,以及错误消息
设置一个元素为无效状态后,整个表单的状态都会无效。 为了能够通过 errorMsg() 取得导致表单元素无效的错误信息,可以指定 $msg 参数。
$element->invalidate('order 的值不能小于 0');
public array errorMsg()
返回验证错误信息
public mixed value()
获得表单元素的值
public mixed unfilteredValue()
返回未过滤的值