相信每個PHP程序員都知道PEAR,而PEAR::HTML_QuickForm是PEAR中的一個非常實用的類庫,它可以讓你動態地創建,驗證和顯示Html表單。
主要特點如下:
* 可以創建20種常見的表單;
* 生成兼容性好的XHtml代碼 * 自動化的服務器端驗證和過濾
* 可以生成客戶端驗證代碼(JavaScript)。 * 支持多種模板引擎,如ITX, Sigma, Flexy, Smarty等
* 可加入自定義的表單元素、驗證規則和顯示規則。
下載和安裝請參看
http://pear.PHP.Net
首先我們來看這樣一個例子:
FirstForm.PHP<!DOCTYPE HTML PUBLIC "-//W3C//DTD Html 4.0 Transitional//EN">
<Html>
<HEAD>
<TITLE> PEAR::Html_QuickForm </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="Haohappy">
</HEAD>
<BODY>
<?
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', 'submit', '提交');
//輸出到浏覽器
$form->display();
?>
</BODY>
</Html>
這種方法看起來是不是很酷 J 我們可以快速地創建表單,當然這不是我們使用QuickForm的主要原因,因為使用一些可視化的工具來創建表單似乎更快一些。
QuickForm可以創建的表單元素類型:
text
autocomplete
passWord
textarea
hidden
select
hIErselect
hiddenselect
checkbox
radio
submit
reset
button
image
file
advcheckbox
date
static
header
link
Html
處理表單數據
接下來我們加入對表單的處理功能。
Form2.PHP<!DOCTYPE HTML PUBLIC "-//W3C//DTD Html 4.0 Transitional//EN">
<Html>
<HEAD>
<TITLE> PEAR::Html_QuickForm </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="Haohappy">
</HEAD><BODY>
<?
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', '', '提交');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'];
}?>
</BODY>
</Html>
在這段代碼裡,我們設計了一個say_hello()函數來處理表單,並通過$form->process()來調用。
輸入到表單的數據保存在一個$data數組中,可以傳遞給say_hello()函數。
表單數據驗證
我們再次對這段代碼進行改進,為其加入表單數據驗證功能。
使用戶在登錄時必須輸入用戶名和密碼,並且用戶名長度不能小於三位。
Form3.PHP<!DOCTYPE HTML PUBLIC "-//W3C//DTD Html 4.0 Transitional//EN">
<Html>
<HEAD>
<TITLE> PEAR::Html_QuickForm </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="Haohappy">
</HEAD><BODY>
<?
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');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'];
}?>
</BODY>
</Html>
//加入三條驗證規則
$form->addRule('name','用戶名不能為空!', 'required');
$form->addRule('name','用戶名必須為3位以上字母或數字', 'minlength',3);
$form->addRule('passWord','密碼不能為空!', 'required');
addRule()方法的四個參數分別表示規則應用的對象、提醒文字、驗證規則的類型(如required表示必須輸入,不能為空)、驗證規則的參數。