joshcanhelp/php-form-builder

一个简单、轻量级的PHP类,使创建表单变得容易

v0.9.0 2020-08-29 17:39 UTC

This package is auto-updated.

Last update: 2024-08-29 04:19:55 UTC


README

这是一个小的PHP类,可以轻松构建和输出HTML或XHTML形式的表单。表单很繁琐,而且很难做到恰到好处。此外,可能有很多不同的选项,很容易忘记可以使用哪些。

我试图在易用性和灵活性之间取得平衡,并得出了一些我觉得非常有帮助的东西。目前,我将其视为“测试版”,因为它只应用于几个应用程序,而且所有不同的选项都还没有彻底检查。

试试看,并告诉我你喜欢什么,讨厌什么,以及需要修复什么。

与表单构建器一起工作

创建表单的过程很简单

  1. 实例化类
  2. 如有需要,更改任何表单属性
  3. 添加输入,按照你希望它们出现的顺序
  4. 输出表单

让我们一一介绍这些

1) 实例化类

这很简单

$new_form = new PhpFormBuilder();

这使用表单的所有默认设置,如下所示

  • action: 空值,提交到当前URL
  • method: post
  • enctype: application/x-www-form-urlencoded
  • class: none
  • id: none
  • markup: html
  • novalidate: false
  • add_nonce: false
  • add_honeypot: true
  • form_element: true
  • add_submit: true

以下是对每个设置的说明

您还可以通过传递一个URL来实例化,该URL将成为表单的动作

$new_form = new PhpFormBuilder('http://submit-here.com');

2) 如有需要,更改任何表单属性

一旦创建表单,使用 set_att 函数更改默认属性

// Add a new form action
$new_form->set_att('action', 'http://submit-here.com');

// Change the submit method
$new_form->set_att('method', 'get');

// Change the enctype
$new_form->set_att('enctype', 'multipart/form-data');

// Can be set to 'html' or 'xhtml'
$new_form->set_att('markup', 'xhtml');

// Classes are added as an array
$new_form->set_att('class', array());

// Add an id to the form
$new_form->set_att('id', 'xhtml');

// Adds the HTML5 "novalidate" attribute
$new_form->set_att('novalidate', true);

// Adds a WordPress nonce field using the string being passed
$new_form->set_att('add_nonce', 'build_a_nonce_using_this');

// Adds a blank, hidden text field for spam control
$new_form->set_att('add_honeypot', true);

// Wraps the inputs with a form element
$new_form->set_att('form_element', true);

// If no submit type is added, add one automatically
$new_form->set_att('form_element', true);

目前,有一些限制,无法添加的内容,但没有检查类或ID是否有效,因此请注意这一点。

3) 添加输入,按照你希望它们出现的顺序

输入可以逐个添加或作为一组添加。无论是哪种方式,它们添加的顺序就是它们显示的顺序。

使用其标签(以可读形式)、设置数组以及如果需要,名称/ID别名来添加字段。

$new_form->add_input('I am a little field', array(), 'little_field')
  • 参数1:一个可读标签,它将被解析并转换为名称和ID,如果这些选项未显式设置。如果你在这里使用简单的标签“电子邮件”,请确保在参数3中设置更具体的名称。
  • 参数2:一个设置数组,它将与默认设置合并,以控制字段的显示和类型。下面是默认和可能的设置。
  • 参数3:一个字符串,是有效的HTML属性,用作名称和ID。这允许你设置与字段标签不同的特定提交名称。

字段输入的默认和可能设置(参数2)

type

  • 默认为"text"
  • 可以设置为任何内容,除非以下提到,否则用作输入字段的“type”
  • 将其设置为“标题”将使用标签文本输出h3元素
  • 将其设置为“文本区域”将构建一个文本区域字段
  • 使用“选择”与“选项”参数结合将创建下拉菜单。

name

  • 默认为参数3,如果设置,或格式化的标签文本
  • 这成为字段的“name”属性

id

  • 默认为参数3,如果设置,或格式化的标签文本
  • 这将成为字段的 "id" 属性和标签的 "for" 属性

标签

  • 默认是参数 1,可以使用此参数显式设置

  • 默认为空
  • 如果找到一个具有相同名称的 $_REQUEST 索引,则用找到的该值替换

占位符

  • 默认为空
  • HTML5 属性,用于显示在字段焦点消失时的文本

  • 默认为空数组
  • 使用有效的类名数组添加多个类

选项

  • 默认为空数组
  • 选项数组用于类型为 "select"、"checkbox" 和 "radio" 的字段。对于其他输入,此参数将被忽略
  • 数组应该是一个关联数组,其中值作为键,标签名称作为值,例如 array('value' => '要显示的名称')
  • 字段的标签名称用作多个选项的标题(将 "add_label" 设置为 "false" 以抑制)

最小值

  • 默认为空
  • 用于类型 "range" 和 "number" 的

最大值

  • 默认为空
  • 用于类型 "range" 和 "number" 的

步长

  • 默认为空
  • 用于类型 "range" 和 "number" 的

自动聚焦

  • 默认为 "false"
  • 值为 "true" 时,仅添加 HTML5 "autofocus" 属性

选中

  • 默认为 "false"
  • 值为 "true" 时,仅添加 "checked" 属性

必填

  • 默认为 "false"
  • 值为 "true" 时,仅添加 HTML5 "required" 属性

添加标签

  • 默认为 "true"
  • 值为 "false" 将抑制此字段的标签

包装标签

  • 默认为 "div"
  • 字段包装器的有效 HTML 标签名。
  • 将其设置为空字符串以不使用字段包装器

包装类

  • 默认为包含 "form_field_wrap" 的数组
  • 类应作为有效的 HTML 类名数组添加

包装 ID

  • 默认为空
  • 通过传递字符串为此字段添加 ID

包装样式

  • 默认为空
  • 此文本字符串将添加到 style 属性中

4) 输出表单

一个简短的语句以 HTML 形式输出表单

$new_form->build_form();

路线图

这里有一些我想纠正的事情和一些要添加的功能。按优先级顺序

  • 添加类和 ID 的验证
  • 添加字段集和标题
  • 更改默认字段设置的函数
  • 为选择和多个复选框添加设置选中和勾选的功能
  • 更严格的名称生成
  • 在表单中添加 HTML 的能力
  • 为表单属性添加 'html_before' 和 'html_after'