高得帅的web表单生成器

                                              第6章 阶段案例——Web表单生成器

在这里插入图片描述

在项目的实际开发中,经常需要设计各种各样表单。直接编写HTML表单虽然简单,但修改、维护相对麻烦。
因此,可以利用PHP实现一个Web表单生成器,使其可以根据具体的需求定制不同功能的表单。具体实现需求如下:
使用多维数组保存表单的相关信息
支持的表单项包括文本框、文本域、单选框、复选框和下拉列表5种类型
保存每个表单项的标记、提示文本、属性、选项值、默认值等
将功能封装成函数,根据传递的参数生成指定的表单

数据的保存形式决定了程序实现的方式。
因此,根据上述开发要求,可以将每个表单项作为一个数组元素,每个元素利用一个关联数组描述,分别为:标记tag、提示文本text、属性数组attr、选项数组option和默认值default。

表单的主要功能:就是在网页上用于输入信息的区域,收集用户输入的信息,并将其提交给后端的服务器进行处理,实现用户与服务器的交互。
例如:购物结算、信息搜索等都是通过表单实现的。

在编写表单控件时,为了提供更好的用户体验,经常将input控件与label标记联合使用,以扩大控件的选择范围。
例如,选择性别时,单击提示文字“男”或“女”,也可选中相应的单选按钮。

使用label标记包裹单选按钮和提示文本,即可实现单击label标记里的内容时,相应的表单控件就会被选中。

// 利用多维数组保存表单元素
[
0 => [], // 表单项
1 => [], // 表单项
2 => [], // 表单项
3 => [], // 表单项
……
];

// 每个表单项的数组结构
0 => [
‘tag’ => ‘’, // 标记
‘text’ => ‘’, // 提示文本
‘attr’ => [], // 属性数组
‘option’ => [], // 选项数组
‘default’ => ‘’ // 默认值
],

// $elements数组保存整个表单
$elements = [
0 => [], // 第1个表单项数组
1 => [], // 第2个表单项数组
];
0 => [
‘tag’ => ‘input’,
‘text’ => ‘姓  名:’,
‘attr’ => [‘type’ => ‘text’, ‘name’ => ‘user’]
],

3 => [
‘tag’ => ‘input’,
‘text’ => ‘性  别:’,
‘attr’ => [‘type’ => ‘radio’, ‘name’ => ‘gender’],
‘option’ => [‘m’ => ‘男’, ‘w’ => ‘女’],
‘default’ => ‘m’
],
option利用关联数组保存具体的单选项,键名m、w为单选框的value属性值,对应的值“男”、“女”为该单选项的提示信息
default的值为option关联数组中的一个键名,表示默认选中哪一项

4 => [
‘tag’ => ‘input’,
‘text’ => ‘爱  好:’,
‘attr’ => [‘type’ => ‘checkbox’, ‘name’ => ‘hobby[]’],
‘option’ => [‘swimming’ => ‘游泳’, ‘reading’ => ‘读书’, ‘running’ => ‘跑步’],
‘default’ => [‘swimming’, ‘reading’]
],

5 => [
‘tag’ => ‘select’,
‘text’ => ‘住  址:’,
‘attr’ => [‘name’ => ‘area’],
‘option’ => [’’ => ‘–请选择–’, ‘BJ’=>‘北京’, ‘SH’=>‘上海’, ‘SZ’=>‘深圳’]
],

6 => [
‘tag’ => ‘textarea’,
‘text’ => ‘自我介绍:’,
‘attr’ => [‘name’ => ‘introduce’, ‘cols’ => 50, ‘rows’ => 5]
],

表单的自动生成——读取 e l e m e n t s 数 组 实 现 思 路 为 了 方 便 处 理 用 户 提 交 的 数 据 , 将 elements数组 实现思路 为了方便处理用户提交的数据,将 elements便elements中的每个表单项与指定的数组进行合并,使得每个表单项都含有键为tag、text、attr、option和default五个元素,且顺序相同。
根据tag值,分别调用前缀为“generate_”的函数进行表单项的拼接
每个表单项占据一行,并返回拼接好的表单

表单的自动生成——拼接表单元素的属性
实现思路
定义函数generate_attr($attr, $items = ‘’)用于完成表单元素属性的拼接
a t t r 数 组 中 元 素 的 键 为 属 性 名 称 , 元 素 的 值 为 属 性 的 值 通 过 遍 历 完 成 属 性 与 attr数组中元素的键为属性名称,元素的值为属性的值 通过遍历完成属性与 attritems的拼接并返回,如type=“radio” name=“gender”

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值