自定义验证规则:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
大多数时候我们使用QuickForm自带的验证规则就已经足够了,但如果有时我们需要的数据格式比较特殊那怎么办呢? QuickForm允许你自定义验证规则。
下面的例子中,我们增了一条自定义的规则:用户名必须为Haohappy。
<?
require_once(
"HTML/QuickForm.php"
);
$form
= new
HTML_QuickForm
(
'frmTest'
,
'post'
);
$form
->
addElement
(
'header'
,
'header'
,
'
请登录
'
);
$form
->
addElement
(
'text'
,
'name'
,
'
用户名:
'
);
$form
->
addElement
(
'password'
,
'password'
,
'
密码:
'
);
$form
->
addElement
(
'submit'
,
''
,
'
提交
'
);
//
加入三条验证规则
$form
->
addRule
(
'name'
,
'
用户名不能为空!
'
,
'required'
);
$form
->
addRule
(
'name'
,
'
用户名必须为
3
位以上字母或数字
'
,
'minlength'
,
3
);
$form
->
addRule
(
'password'
,
'
密码不能为空!
'
,
'required'
);
$form
->
registerRule
(
'Haohappy_only'
,
'function'
,
'check_haohappy'
);
$form
->
addRule
(
'name'
,
'
用户名必须为
Haohappy'
,
'Haohappy_only'
);
if (
$form
->
validate
()) {
$form
->
process
(
'say_hello'
);
} else {
$form
->
display
();
}
function
say_hello
(
$data
) {
print
'Hello, '
.
$data
[
'name'
];
print
'<BR>'
;
print
'Your password is '
.
$data
[
'password'
];
}
function
check_haohappy
(
$element_name
,
$element_value
) {
if (
$element_value
==
'Haohappy'
) {
return
true
;
} else {
return
false
;
}
}
?>
效果如图:
你应该注意到了,代码中我们新增了以下:
$form
->
registerRule
(
'Haohappy_only'
,
'function'
,
'check_haohappy'
);
$form
->
addRule
(
'name'
,
'
用户名必须为
Haohappy'
,
'Haohappy_only'
);
我们新注册了一个名为“Haohappy_only”的验证规则,并指定这个验证由函数(function) check_haohpapy()来执行。
再接下来我们定义一个check_haohpapy()函数,当用户名为Haohappy时返回true,当不为Haohappy时返回false。
function
check_haohappy
(
$element_name
,
$element_value
) {
if (
$element_value
==
'Haohappy'
) {
return
true
;
} else {
return
false
;
}
}