Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18672348
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类:

2008-04-14 19:56:16


    【PHPChina讯】程序员们往往被告之不要去重复地编写程序, 而且最好的程序员在写他们自己的程序的时候都会借鉴别人的。:;" onClick="javascript:tagshow(event, 'PHP');" target="_self">PHP,作为一个基本的Web语言,常见于form的显示,处理和验证(确认)。然而,有一个强大的PEAR包需要更多的关注:它就是HTML_QuickForm,它促使图的提交和form的显示,而且更有用的是,客户端和服务器端都能够得到验证,即快又简单。这篇文章会让你了解PEAR包的基本知识。他假定你已有表格基础,并且有基本的PHP技能。

    安装HTML_QuickForm

    安装PEAR包只需要两个条件:PHP4.2版本以上,并且有HTML_Common包。现在为止HTML_QuickForm 3.2.7是最新的版本,它需要对应的HTML_Common 1.2.1。有人在为PHP5写这两个包(以HTML_QuickForm2和 HTML_Common2的形式),但是还没有发布。

    你可以通过以下pear list检查PEAR是否已经安装:
pear list
Installed packages:
===================
Package        Version State
Archive_Tar     1.1     stable
Console_Getopt 1.2     stable
DB               1.6.2   stable
Date            1.4.6   stable
HTTP            1.2.2   stable
Image_Canvas   0.3.0   alpha
Image_Color    1.0.2   stable
Image_Graph    0.7.2   alpha
Mail            1.1.3   stable
Net_SMTP       1.2.6   stable
Net_Socket     1.0.1   stable
PEAR           1.3.2   stable
Validate       0.6.3   beta
XML_Parser     1.0.1   stable
XML_RPC        1.1.0   stable

    从以上可以知道,你的机器即没有HTML_QuickForm 也没有 HTML_Common,所以它们需要被安装:
pear install HTML_Common
downloading HTML_Common-1.2.3.tgz ...
Starting to download HTML_Common-1.2.3.tgz (4,746 bytes)
.....done: 4,746 bytes
install ok: HTML_Common 1.2.3

pear install HTML_QuickForm
downloading HTML_QuickForm-3.2.7.tgz ...
Starting to download HTML_QuickForm-3.2.7.tgz (102,475 bytes)
........................done: 102,475 bytes
install ok: HTML_QuickForm 3.2.7
 
    显示form

    使用代码去显示一个表单很简单,让我们以一个例子开始:
 require_once "HTML/QuickForm.php"; // tell PHP to include the QuickForm package

  $form = new HTML_QuickForm('register', 'post');  // instantiate the object
  $form->addElement('text', 'firstName', 'Enter first name'); // add a text element
  $form->addElement('password','password', 'Enter your password'); // add a password element
  $form->addElement('textarea','ta','Description'); // add a textarea element
  $form->addElement('submit','sb','Submit form'); // add a submit button element

  $form->display();
?>


    很明了这小段代码的意思:包的引入,的示例,然后加入元素(称作FirstName的:在它之后输入你的first name;password:在它之后输入你的password。)下面是HTML代码的样子:



 


  
  
 
 

  


  
 
 
  
  

 


 
  
  

 


Enter first name 
Enter your password 
Description 
 



    因为你可以看到HTML_QuickForm允许你能够用更少的输入去得到同样的输出,所以即使没有其他的益处,它至少能节约你的一些时间(虽然在这个例子里我并没有介绍它!)。它同样加入了XHTML Strict-compliant(除了一点小例外是关于名字属性的遗留,这可以很容易地去除)。以上例子利用了一个text,一个textarea和一个password元素。以下有一个关于其它可添加的HTML_QuickForm 元素的列表,包括HTML_QuickForm 名称,和HTML equivalent。他们都给定为straighforward names,所以,如果你了解HTML,你就会理解它们:
element HTML
button 
checkbox 
file 
hidden 
image 
password 
radio 
reset 
select 
text 
textarea 
 
 

  
   
 
 
  
 * denotes required field
 



    在这个例子中,compare规则允许其他操作者使用非等(!=),或者。如果你把操作者一起省去,它被假定为=,意思是这两个元素都必须相同(特别地适合去检查用户输入的密码或邮件地址是否正确)


    处理表单数据

    迄今为止,我们已经简单地成功显示了!如果表单已经被验证。虽然它看起来并不是特别的优秀。HTML_QuickForm 提供一个process()方式,它调用一个函数并审核提交值。以下是操作方式:
  require_once "HTML/QuickForm.php";

  $defaults_= array("firstName"=>"Ian",
                 "password"=>"abc",
                 "ta"=>"Describe yourself here");

  $form = new HTML_QuickForm('register', 'post');
  $form->addElement('text', 'firstName', 'Enter first name');
  $form->addElement('password','password', 'Enter your password');
  $form->addElement('textarea','ta','Description');
  $form->addElement('submit','sb','Submit form');

  $form->addRule('firstName','Your name is required', 'required');

  if ($form->validate()) {
    // processing code goes here.
    $form->process('process_data', false);
  }
  else {
    $form->setDefaults($defaults);
    $form->display();
  }

  // For now just display the submitted vales, but you'll want to do a lot more
  function process_data ($values) {
    foreach ($values as $key=>$value) {
      echo $key."=".$value."
";
    }
  }
?>


    格式化表单

    早期的HTML_QuickForm版本在改变layout的时候并没有那么灵活。但是,从3.0版本开始基于有 众所周知的Visitor设计样式。有8个renderer可用,而且有以下这些模板引擎直接支持:Smarty, HTML_Template_Sigma, HTML_Template_IT,HTML_Template_Flexy。要查看这些各式的renderer和模板引擎的细节必须在这篇文章之外,不过,在接下来的例子中简要地说明了HTML_QuickForm能够充分地定制你的表单输出。我的例子是凭空想象的,所以你一定要自己试试效果!确信无疑的是,如果你特别熟悉一个模板引擎,你会发现很快就能利用它。
  require_once "HTML/QuickForm.php";

  $defaults_= array("firstName"=>"Ian",
                 "password"=>"abc",
                 "ta"=>"Describe yourself here");

  $form = new HTML_QuickForm('register', 'post');
  $form->addElement('text', 'firstName', 'Enter first name');
  $form->addElement('password','password', 'Enter your password');
  $form->addElement('textarea','ta','Description');
  $form->addElement('submit','sb','Submit form');

  $form->addRule('firstName','Your name is required', 'required');

  $renderer =& $form->defaultRenderer();

  $special_element_template='

 
    *
    {label}
 
   
    {error}

  {element}
';

  $renderer->setElementTemplate($special_element_template);

  if ($form->validate()) {
    // processing code goes here.
    echo 'Success!';
  }
  else {
    $form->setDefaults($defaults);
    $form->display();
?>


    结论

    我确信你会发现它很容易使用,有关于这个包的更多的东西在官方的HTML_QuickForm(链接)页面上,有API和更多的PEAR包,还有用户文档。而且不要忘记当HTML_QuickForm2发布的时候,去查看这个包关于PHP5东西。

    原文地址:

阅读(576) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~