NOThing Is Impossible! —— 原创文章,谢绝转载!
注:本文翻译自FormBuilder的官方网站的教程。为了方便中文的阅读习惯和理解,我修改了一些英文的表述方式,并增加了一些个人注解。所以本文并不是忠实的翻译原文,用编译可能更合适。版权属于FormBuilder的官方网站。
欢迎来到FormBuilder教程!本教程将会手把手教你使用FormBuilder——从基本的表单到高级的模板和多语言的消息系统。
基础
FormBuilder设计用来处理CGI表单的方方面面——表单的产生、提交和验证。FormBuilder程序经常是反馈给自 身,也就是说你调用一个脚本,基于CGI参数来处理你的整个程序。
FormBuilder使用面向对象的调用风格,但这并不会把你吓跑。其使用非常简单,只需要你了解几个函数而已。在这个文档中, 我们的FormBuilder对象总是用$form来表示,当然在你的脚本中也可以这么使用。
基本步骤:
就这么多。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代码,这会有助于你的理解。