FormBuilder基础教程-第一步:简介
注:本文翻译自FormBuilder的官方网站的教程。为了方便中文的阅读习惯和理解,我修改了一些英文的表述方式,并增加了一些个人注解。所以本文并不是忠实的翻译原文,用编译可能更合适。版权属于FormBuilder的官方网站。
欢迎来到FormBuilder教程!本教程将会手把手教你使用FormBuilder——从基本的表单到高级的模板和多语言的消息系统。
基础
FormBuilder设计用来处理CGI表单的方方面面——表单的产生、提交和验证。FormBuilder程序经常是反馈给自 身,也就是说你调用一个脚本,基于CGI参数来处理你的整个程序。
FormBuilder使用面向对象的调用风格,但这并不会把你吓跑。其使用非常简单,只需要你了解几个函数而已。在这个文档中, 我们的FormBuilder对象总是用$form来表示,当然在你的脚本中也可以这么使用。
基本步骤:
- 利用CGI::FormBuilder->new()来创建一个$form对象。
- 利用$form->field()定义表单域。
- 使用$form->submitted来检查表单是否已提交,如果是,使用$form->validate来验证。
- 利用$form->field()来获得每个值,然后做你任何想要的事(比如更新数据库等)。
- 如 果表单没有提交(或者验证失败),使用$form->render函数来打印表单。
就这么多。FormBuilder将会接管HTML和JavaScript,表格的布局、验证、持续性、错误信息等等。好了,咱们看一个简单的 FormBuilder程序。
下面是一个简单的FormBuilder程序:
- #!/usr/bin/perl
- use CGI::FormBuilder;
- @fields = qw(first_name last_name email phone);
- $form = CGI::FormBuilder->new(
- fields => \@fields,
- );
- if ($form->submitted && $form->validate) {
- # you would write code here to act on the form data
- $fname = $form->field('first_name');
- $lname = $form->field('last_name');
- print $form->confirm(header => 1);
- } else {
- print $form->render(header => 1);
- }
在上面的程序中,我们首先定义表单的域,然后创建一个$form对象将其纳入(必须使用数组的引\@fields来 确保数据一起传入)。FormBuilder使用这些数据,为每个域创建一个标签,然后使用$form->render 方法将所有的元素放在一个HTML表格中。事实上,FormBuilder甚至可以根据脚本的文件名为表单创建标题。(比如personal_info.pl 变成表单的标题 “Personal Info”)。当用户点击“提交”按钮,$form->submitted将返回true值, 在上面的例子中也会引起$form->validate的执行(由 于if语句中的&&操作符)。如果两者都返回true值,这意味着提交的表单数据有效,然后你就可以处理这些数据了。
使用field()获取表单的数据就像使用CGI.pm中的param()函数一样简单。field() 也有很多其他用处,这个我们以后会提到。好了,看看上面的程序的实际效果吧。 查看浏览器的源代码,可以看到我们的程序产生的HTML代码,这会有助于你的理解。

上面说得对