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) 实例化类
这很简单
$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'