开放的编程资料库

当前位置:我爱分享网 > PHP教程 > 正文

带有 Smarty 快速入门的 HTML_QuickForm

我想玩HTML_QuickForm已经有一段时间了,但是关于在Smarty中使用HTML_QuickForm的文档看起来相当稀疏和可怕。由于我一直忙于工作,并且不想花时间学习新的库,所以我一直在推迟。

昨晚,我浏览了包文档,注意到一个指向KeithEdmunds的HTML_QuickForm入门指南的链接。我很高兴地发现他还有使用Smarty和HTML_QuickForm的指南。我开始使用这些教程,发现它们非常棒。之后我发现自己想要更多的肉,并且发现我现在可以转向PEAR文档并真正理解这一切。

虽然我认为Edmunds先生的教程非常适合初学者,但我发现其中有一些我可以立即使用的指导。我在这里为您介绍它们。

我不会做任何代码示例;此时,您应该已经阅读了上述教程。以下注释提供了更多信息,通过提供一些实用工具和使用该组合的步骤,帮助您使用HTML_Quickform+Smarty运行更快

在我看来,通过HTML_QuickForm+Smarty创建和使用表单使用以下步骤:

  1. 创建表单元素。这是通过HQF的addElement()方法完成的,涉及设置表单元素类型、名称和标签。

  2. 创建表单输入过滤器(可选)。这是通过HQF的applyFilter()方法完成的;通常,您可能想要trim()输入,并且,如果magic_quotes打开,stripslashes()

  3. 创建验证规则。这是通过addRule()方法完成的,该方法将元素名称、出错时显示的文本和规则类型作为参数(如果规则类型需要,还有第四个参数)。您可以在这里做一些非常巧妙的事情:

    • 您可以向任何给定元素添加多个规则。例如,特定元素可能需要同时是“必需的”’并匹配给定的正则表达式;您可以为这两个添加规则
    • regex规则允许您将第四个参数传递给addRule()theregex值应该匹配。
    • email规则使您不必在每次编写表单时都记住regexforemails。
  4. 验证测试。我发现,将此作为if-then-else块实际上很好。这允许您根据$form->validate()是否成功执行不同的操作;例如,您可能不希望在成功时显示与失败时相同的模板。可以肯定的是,如果表单通过验证(假设您不再显示表单或其值),您将不需要对渲染器执行任何操作。

  5. 设置渲染器选项。基本上,如果表单验证失败,您将需要再次显示它。最有可能的是,您希望向用户显示一些新内容:哪些元素有错误,以及它们的错误消息。此外,您可能希望显示哪些元素是必需的。每个渲染器都提供多种方法来允许此类自定义。这些方法每个都可以显示元素:

    • {$label}—表单元素的标签
    • {$html}—表单元素的HTML
    • {$error}—表单元素的错误文本
    • {$required}>—指示是否需要元素的标志

    如果{$label}{$html}元素在传递给这些方法之一的模板中被引用时,该表单元素的相应字段(标签或html)将在传递给主表单模板之前受到影响。

    渲染器类提供以下方法:

    • setRequiredTemplate()。将模板作为字符串传递给它;将为每个必需的元素调用此模板。因此,您通常需要修改模板中的{$label}元素,通常使用某种标志,例如星号。
    • setErrorTemplate().将模板作为字符串传递给它;如果给定元素发生错误,将显示此模板。同样,与setRequiredTemplate()一样,您通常会想要修改标签,这次是通过附加错误字符串。
    • setRequiredNote()。将模板作为字符串传递给它;可以通过调用模板中的$form_data.requirednote字段来显示此模板(假设您将表单数据分配给$form_data)。这应该是一些简单的文本,效果为“*这些字段是必需的。”(实际上,在Smarty模板中,这可能不是必需的)。
  6. 冻结和处理。如果表单通过验证,则应将其冻结,并在必要时处理提交。HQF有一个方法“process()”,它允许您将值传递给回调。但是,您可能会发现最简单的方法是简单地获取这些值并自己处理它们。您可以使用exportValues()方法轻松安全地完成此操作,该方法返回一个关联数组,其形式为key=>value对,因为它们存在过滤后;此外,它只会传递一个包含由表单处理的元素的数组(即,即使传递,也不会返回任何其他值)。

离别笔记

在我看来,可以编写一个配置脚本/类/文件来执行前三个步骤,定义表单元素、它们的过滤器和它们的验证;这甚至可以扩展以处理渲染器选项。然后,只需简单地调用它、测试验证,然后重新显示表单或使用返回值处理它。

(出于这个目的,我可能会使用上面的方法创建一个Cgiapp插件,本质上类似于CGI::ApplicationData::FormValidator插件.)

未经允许不得转载:我爱分享网 » 带有 Smarty 快速入门的 HTML_QuickForm

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏