分享
 
 
 

PEAR之HTML_QuickForm的尝试

王朝php·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

如果对于我们PHP的爱好者来说,最大的希望就是能让PHP更加胜任大系统的架构.

直到有一天,企业级的解决方案都会考虑选择的PHP的框架体系.

然而,我们不得不承认,PHP先天的脚本属性使得这样的理想比较奢侈.但是,努力一定会有所收获.

PEAR::HTML_QuickForm

这个公共包让我们的代码更加纯洁,不再是HTML和脚本稀里糊涂的搅在一起.然而他更大的功能我们非常有必要去发掘.

毫无疑问,他的直接功能就是快速构建Form.

1.构建

代码1:

require_once("HTML/QuickForm.php");

//建立一个表单对象,表单名,表单提交方式

$form = new HTML_QuickForm('fmJyxx','post');

//表单增加一个标题

$form->addElement('header', 'title','标题');

//表单增加一个select控件,名称叫做field1,Label为字段1,下拉列表有两个可选值s1和s2,Value对应"1"和"2"

$form->addElement('select', 'field1', '字段1:',array("1"=>"s1","2"=>"s2"));

//表单增加一个Text控件.

$form->addElement('text', 'field2', '字段2:');

//以上的通过增加的Element根据默认的模板为上下排列,下面我们把两个按钮排列成一行添加进去

$group[] =& HTML_QuickForm::createElement('submit', 'tj', '提交');

$group[] =& HTML_QuickForm::createElement('reset', 'cz', '重置');

$form->addGroup($group, 'buttons', '功能按钮:', ' ');

通过上面的代码我们的表单就构造好了,通过$form->display().就显示了出来,看我们的PHP慢慢的把HTML标签从我们的Coding中淡化了,我们象写Java,C++代码一样专注于逻辑的编写,而不是标签的[排列了.

QuickForm还提供了对控件数据的验证功能,验证的规则很丰富,也可以支持扩展,例如你要求字段2必录,

$form->addRule("field2","字段2 不能为空",'required','','client');

参数分别为:要求的控件名,验证不通过的提示信息,规则名称(此为比录),client表示可以把规则转化为客户端的javascript代码.

例如有一个字段3,你需要对该字段有自己的特殊规则,可以这么做:

注册一个规则

$form->registerRule('ckdate','function','mycheckdate');

参数:规则名称,规则验证方式为函数,函数名称mycheckdate

那么你只要定义mycheckdate函数就可以了,系统会自动传递字段3的值作为该函数的参数,象这样

function mycheckdate($val){

}

返回true或false表示你对该值的验证结果.

2.使用

上面我们把构建一个Form的方法了解了,但是构建完之后我们如何来控制这些控件.

QuickForm是一个体系,提供了HTML_QuickForm_Element类他是所有控件的基类,通过继承这个基类,我们有所有支持的控件的具体类,比如HTML_QuickForm_Select.每个具象类都有自己不同的属性和不同的操作方法,比如Text只需要getValue和setValue,而Select却需要有对Options的控制,如addOption函数.

在完成上述代码之后,我们可以这样来控制某个控件

$elem = $form->getElement("elementname");

得到的$elem就是对名称为"elementname"的控件的引用指针,通过这个指针,你可以对该具体类的属性进行存取.每个控件都有自己对应的类,相信信息请参考Pear's Manual的HTML_QuickForm部分.

(注:我在尝试这一部分的时候,遇到失灵的现象,还盼早日知道详情.)

3.和身份验证一起使用

我们常用的身份验证需要一个包含输入用户名和密码的Form,而这个Form可以由QuickForm构建,而认证方式可以通过另外一个Pear的package--Auth来完成.

代码2:

//构建用户名和密码的Form代码就采用上述的QuickForm构建,包含在函数show_form中,在此省略

//...........

//该验证方式基于数据库验证,在下面的例子中,数据库为本地的mysql下的mydb,

//创建的关系表为Auth,里面的字段为username和password,密码加密方法为"none"表示密码没有加密

require_once("AUTH/AUTH.php");

//连接参数

$options = array(

"dsn" => "mysql://caoxh:jiziba@localhost/mydb",

"table" => "auth",

"usernamecol" => "username", //用户名字段

"passwordcol" => "password", //口令字段

"cryptType" => "none", //口令加密方式,明文验证则'none'

);

//全局的认证变量

$au = new Auth('DB',$options,'show_form');

$au->setExpire(10);

$auth->start();

if(!$auth->getAuth()){

exit('system deny the user!');

}

Auth会把Form显示出来并进行认证,把$au作为全局变量,你从此就可以通过$au的方法来判断认证信息.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有