包 core

包 mvc

包 orm

包 form

包 database

包 helper

包 cache

包 webcontrols

包 behavior

包 exception

包 debug

类 - QForm_Element

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

属性详细说明

$_attrs 属性

属性值

$_owner 属性

该元素的所有者

$_unfiltered_value 属性

未过滤的值

$_filters 属性

过滤器链

$_validations 属性

验证规则

$_is_valid 属性

数据的验证结果

$_error_msg 属性

验证失败的信息

$_locked 属性

元素是否锁定,锁定元素不接受 import 和validate 赋值

方法详细说明

__construct() 方法

public void __construct($id, $attrs, $owner)

$id string 元素ID
$attrs array 属性
$owner QForm_Group
{return}

构造函数


lock() 方法

public QForm_Element lock()

锁定元素


unlock() 方法

public QForm_Element unlock()

元素解锁


__get() 方法

public mixed __get($attr)

$attr string
{return} mixed

魔法方法,以便通过对象属性直接访问元素的属性值

echo $element->title;

__set() 方法

public void __set($attr, $value)

$attr string 属性名
$value mixed 属性值
{return}

魔法方法,以便通过指定对象属性的方式来修改元素的属性值


get() 方法

public mixed get($attr, $default)

$attr string 属性名
$default mixed 默认值
{return} mixed 属性值

获得属性值,如果属性不存在返回 $default 参数指定的默认值


set() 方法

public QForm_Element set($attr, $value)

$attr string 属性名
$value mixed 属性值
{return} QForm_Element

修改属性值


dataBinding() 方法

public boolean dataBinding()

确定数据绑定状态


enableDataBinding() 方法

public QForm_Element enableDataBinding($enabled)

$enabled boolean
{return} QForm_Element

修改数据绑定状态


nestedName() 方法

public string nestedName()

返回群组的嵌套名


changeNestedName() 方法

public QForm_Element changeNestedName($name)

$name string
{return} QForm_Element

设置嵌套名


owner() 方法

public QForm_Group owner()

返回元素的所有者


attrs() 方法

public array attrs()

返回所有不是以“_”开头的属性的值


allAttrs() 方法

public array allAttrs()

返回所有属性的值


add() 方法

public QForm_Element add($type, $id, $attrs)

$type enum
$id string
$attrs array
{return} QForm_Element

调用该元素所属群组的 add() 方法,以便在连贯接口中连续添加元素


isGroup() 方法

public boolean isGroup()

指示该元素是否是一个群组


addFilters() 方法

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',
));

addValidations() 方法

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');

cleanValidations() 方法

public QForm_Element cleanValidations()

清除该元素的所有验证规则


import() 方法

public QForm_Element import($data, $parent_data)

$data mixed
$parent_data
{return} QForm_Element

导入数据,但不进行过滤和验证


validate() 方法

public boolean validate($data, $failed)

$data mixed 要导入并验证的数据
$failed array 保存验证失败的信息
{return} boolean 验证结果

导入数据后进行过滤,并返回验证结果

通常调用 QForm 对象的 validate() 方法一次性导入整个表单的数据。


isValid() 方法

public boolean isValid()

指示表单元素的值是否有效


invalidate() 方法

public QForm_Element invalidate($msg)

$msg string|array 错误消息,如果有多个可以用数组
{return} QForm_Element 返回元素对象本身,实现连贯接口

设置一个元素为无效状态,以及错误消息

设置一个元素为无效状态后,整个表单的状态都会无效。 为了能够通过 errorMsg() 取得导致表单元素无效的错误信息,可以指定 $msg 参数。

$element->invalidate('order 的值不能小于 0');

errorMsg() 方法

public array errorMsg()

返回验证错误信息


value() 方法

public mixed value()

获得表单元素的值


unfilteredValue() 方法

public mixed unfilteredValue()

返回未过滤的值