知者无忧

NOThing Is Impossible! —— 原创文章,谢绝转载!

RSS Feed

FormBuilder基础教程-第一步:简介

2 Comments
Posted by ZZQ on 2010-01-20 at 00:36

注:本文翻译自FormBuilder的官方网站的教程。为了方便中文的阅读习惯和理解,我修改了一些英文的表述方式,并增加了一些个人注解。所以本文并不是忠实的翻译原文,用编译可能更合适。版权属于FormBuilder的官方网站。

欢迎来到FormBuilder教程!本教程将会手把手教你使用FormBuilder——从基本的表单到高级的模板和多语言的消息系统。

基础

FormBuilder设计用来处理CGI表单的方方面面——表单的产生、提交和验证。FormBuilder程序经常是反馈给自 身,也就是说你调用一个脚本,基于CGI参数来处理你的整个程序。

FormBuilder使用面向对象的调用风格,但这并不会把你吓跑。其使用非常简单,只需要你了解几个函数而已。在这个文档中, 我们的FormBuilder对象总是用$form来表示,当然在你的脚本中也可以这么使用。

基本步骤:

  1. 利用CGI::FormBuilder->new()来创建一个$form对象。
  2. 利用$form->field()定义表单域。
  3. 使用$form->submitted来检查表单是否已提交,如果是,使用$form->validate来验证。
  4. 利用$form->field()来获得每个值,然后做你任何想要的事(比如更新数据库等)。
  5. 如 果表单没有提交(或者验证失败),使用$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代码,这会有助于你的理解。

相关日志

Filed under 未分类
Tagged as ,
You can leave a comment, or trackback from your own site.

2 Comments

  • On 2010-01-26 at 23:29 在家赚钱 said

    上面说得对

    回复

  • On 2010-07-12 at 11:19 ylx said

    终于找到了一个教材,能否把所有的翻译下。。。我找了好久,都没有找到formbuilder的中文教程。

    回复

发表评论

您的电子邮箱不会被公开。 标记为 * 的区域必须填写

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

功能

  • 登录
  • 日志 RSS
  • 评论 RSS
  • 中国博客网