PEAR::HTML_QuickForm与Smarty 的结合应用

2016-01-29 13:44 0 1 收藏

PEAR::HTML_QuickForm与Smarty 的结合应用,PEAR::HTML_QuickForm与Smarty 的结合应用

【 tulaoshi.com - PHP 】

Haohappy在《PHP & More》第三期的《PEAR::HTML_QuickForm入门》一文中说过要写QuickForm和Smarty的结合应用,一直没写,今天看到PHPE论坛上有朋友在询问,为自己的懒惰而惭愧。现在补上,希望对大家有点帮助。 在我看来,PEAR::HTML_QuickForm是个非常优秀的表单类库,大大加快了开发速度,我现在的大多数项目都会用到。如果对PEAR::HTML_QuickForm不了解的朋友,建议先看这篇文章。


本文针对的读者为有较丰富开发经验的PHP程序员,要求读者
1. 熟悉PEAR及其安装和使用;
2. 熟悉HTML_QuickForm;
3. 理解模板的概念,熟悉Smarty模板引擎的使用。


在《PEAR::HTML_QuickForm入门》的表单的美化输出一节中,提到了用QuickForm自带的Form修饰方法来美化输出。很明显,这种方法显得有点麻烦,而且让程序员来美化网页,有点难为我们了。 现在程序员和设计师的合作最常见的就是通过模板,所以如何把QuickForm和模板引擎相结合,这就是我们需要解决的问题。其实QuickForm可以和多种模板引擎相结合,如ITX, Sigma, Flexy, Smarty等,每种模板都有其优点和缺点,目前Smarty是最通用的模板引擎,所以我们把QuickForm和Smarty的结合作为重点来研究。

首先,给大家看看我们的最后效果:

Click to fullsize

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)


这个例子非常简单,只有一个Form,4个Input,只是用来讲解QuickForm的使用。在实际开发中,我们经常遇到几十个Input的情况。实际上,表单越复杂,就越显出我们传统的处理方式的低效,就越显出QuickForm的强大。这一点,也许大家以后会体会到。


好,开始我们的QuickForm Smarty之旅。
changPwd.php
<?require_once("includes/config.inc.php");//构建Smarty对象$smarty = new Smarty_App;$smarty-assign('CSSDIR','./templates/admin');$smarty-assign('title',':: Haohappy Test网站管理系统 ::');//构建登录表单$form = new HTML_QuickForm('frmChgPwd', 'post');//增加表单元素$form-addElement('password', 'adminPwd', '','class = NameAndPwd');$form-addElement('password', 'newPwd', '','class = NameAndPwd');$form-addElement('password', 'newPwd2', '','class = NameAndPwd');$form-addElement('submit', 'btnSubmit', '修改密码','class = btnSubmit');//增加验证规则 会自动生成javascript变量,存入javascript验证函数$form-addRule('adminPwd','密码不能为空!', 'required','','client'); $form-addRule('newPwd','新密码不能为空!', 'required','','client'); $form-addRule('newPwd2','新密码不能为空!', 'required','','client'); $form-addRule(array('newPwd','newPwd2'),"两次输入的密码不同!!",'compare','','client');if ($form-validate()) {        //如果表单数据正确,修改密码        $form-process('changePwd');}else{  //否则显示表单 // 建立renderer对象 $renderer =& new HTML_QuickForm_Renderer_ArraySmarty($smarty );      // build the HTML for the form 生成表单的HTML代码 $form-accept($renderer); //assign array with form data 分配表单数据到数组中 $smarty-assign('form_data', $renderer-toArray()); $smarty-catching = false; // 调试 //echo "<pre";var_dump($renderer-toArray());echo "</pre"; $smarty-display("changePwd.tpl");}//修改密码function changePwd(){}     ?


在代码中,我们用$form-addElement()增添了4个表单元素,用$form-addRule()增加了4条验证规则。怎么样,是不是很快捷方便? 以验证两个密码是否相同的验证规则为例,如果我们自己写验证规则,虽然快,但是代码就会显得臃肿和凌乱,由QuickForm来负责数据验证,开发速度大大提高,而且代码显得很简洁漂亮。仅用了一行代码:
$form-addRule(array('newPwd','newPwd2'),"两次输入的密码不同!!",'compare','','client');

关于QuickForm的好处,请参看《PEAR::HTML_QuickForm入门》,在此不再重复。

下面这行代码就是我们将HTML_QuickForm与Smarty连接的桥梁:
$renderer =& new HTML_QuickForm_Renderer_ArraySmarty($smarty ); 


所谓renderer,就是用来负责显示的,这里我们把QuickForm的renderer指定为Smarty,我们就可以使用强大的Smarty模板引擎来格式化QuickForm的输出了。

其它:

changePwd()是这个文件的核心操作函

来源:https://www.tulaoshi.com/n/20160129/1491299.html

延伸阅读
随着软件版本的更新,同属Micromedia门下的Flash和Freehand结合得越来越好。 现在,你可以使用Freehand 强大的绘图功能创建在Flash中制作起来非常烦琐的对象,另外,在Freehand中应用的一些特效或是渐变填充也可以完好无损地保留到Flash中,而且还可以做相应的编辑和修改;Freehand中的制作的Symbol可以直接转换成Flash里面的Sym...
HTML在FrontPage中的应用  虽然FrontPage已经给我们提供了很多面很强大的所见即所得的工具,但是随着HTML语言不断的进步,总有一些新内容新功能需要我们修改HTML代码来完成。而FrontPage中提供了这样的功能,让你的页面随时保持新鲜。 在插入WEB组件的选项窗口中,选择高级控件里的HTML,这里插入的HTML语言是不能用FRONTPAGE 2002...
标签: Web开发
代码如下: script language="javascript"  var stringObj="终古人民共和国,终古人民";  //替换错别字“终古”为“中国”  //并返回替换后的新字符  //原字符串stringObj的值没有改变  var newstr=stringObj.replace("终古","中国");   alert(newstr);  /script  &nb...
摄影与生活的结合   在摄影创作时,若能巧用一些小道具,往往能在摄影作品中制造出非同一般的特殊效果,而我们的生活中,其实也TuLaoShi.com存在不少可利用的道具,你发现了吗?国外杂志 COOPH 最近发表一段影片,教大家利用家里可能就可以找到的简单道具,增加拍摄乐趣和效果,一起来看看有哪些你有兴趣吧! 手机、平板电脑:做...
标签: PHP
我的个人建议,下边的文字都是SMARTY里经常用到的一些基础概念的东西! 写的非常细致,而且接近中国人的思维了,都是工作中做的总结. 但是更全的资料到SMARTY的官方论坛上去看吧!!!!! http://www.phpinsider.com/smarty-forum/ 虽然是全英文的,但是只要你能看个大概其,相信收益将会非常大,而且上边的管理员也是非常热情,可是因为是美国时...

经验教程

244

收藏

20
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部