表单包含多种input类型,包括 hiiden类型 ,text类型,radio类型,checkbox类型,textarea类型,file类型,select类型等基础类型,手写表单就是累耗时耗力开发销量太低而且代码量大了还容易写出bug,每个页面的表单遇到改动的时候恨不得长十双手去改,于是我自己开发了一个php写的表单生成工具,在业务逻辑通过配置或者链式操作去初始表单结构和数据,不管有多少页面都只需要通过配置下就行,我写的这个表单工具 支持块表单,行内表单,table类型表单,支持表单美化 默认是layui效果,也支持jquery控制表单行为,只需要引入layui样式和js即可。在github主页demo目录也提供了示例代码运行查看效果,
Form介绍
使用php编写的html表单生成工具,没有任何依赖可独立使用,支持链式操作和配置创建表单,支持表单美化(默认为layui风格)
特点
- 没有任何依赖可独立使用
- 支持链式操作创建表单
- 支持数组配置创建表单
- 支持块表单
- 支持行内表单
- 支持table表单
- 支持表单美化(默认为layui风格)且方便扩展
项目主页链接
github: https://github.com/mgckid/form
gitee:https://gitee.com/mgckid/form
安装方法
1
|
composer require mgckid /form |
快速使用
链式操作创建块表单
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<?php require __DIR__ . '/../src/Form.php' ; Form::getInstance() ->form_method(Form::form_method_post) ->form_action( '/' ) ->input_text( '姓名' , '' , 'name' , '法外狂徒张三' ) ->radio( '性别' , '' , 'male' , [ 'male' => '男' , 'female' => '女' ], 'male' ) ->checkbox( '爱好' , '' , 'interest' , [ 'ktv' => 'K歌' , 'dance' => '跳舞' , 'movie' => '看电影' , 'run' => '跑步' ], 'ktv,run' ) ->input_inline_start() ->input_text( '省份' , '' , 'sheng' , '湖北省' ) ->input_text( '市' , '' , 'shi' , '武汉市' ) ->input_text( '区' , '' , 'qu' , '武昌区' ) ->input_text( '街道' , '' , 'jie' , '紫阳路36号' ) ->input_inline_end() ->input_hidden( 'id' , '1' ) ->input_text( 'user name' , '' , 'user' , 'admin' ) ->input_password( 'password' , '' , 'password' , '123456' ) ->radio( 'is active' , '' , 'is_active' , [ [ 'value' => '1' , 'name' => 'active' ], [ 'value' => '0' , 'name' => 'unactive' ] ], 1) ->checkbox( 'user role' , '' , 'role' , [ [ 'value' => '1' , 'name' => 'boss' ], [ 'value' => '2' , 'name' => 'manager' ], [ 'value' => '3' , 'name' => 'employee' ], ], '1,2' ) ->select( 'user department' , '' , 'department' , [ [ 'value' => '1' , 'name' => 'sales' ], [ 'value' => '2' , 'name' => 'hr' ], [ 'value' => '3' , 'name' => 'secured' ], ], 1) ->form_class(LayuiForm::form_class_pane) ->input_submit( '确认保存' , 'class="layui-btn" lay-submit lay-filter="saveBtn"' ) //->input_date() //->editor() //->form_data() //->table() ->create(); ?> |
数组配置创建块表单
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
<?php require __DIR__ . '/../src/Form.php' ; $init = array ( 0 => array ( 'title' => 'Id' , 'name' => 'id' , 'description' => 'Id' , 'enum' => array (), 'type' => 'hidden' , 'widget_type' => '' , ), 1 => array ( 'title' => '用户id' , 'name' => 'user_id' , 'description' => '用户id' , 'enum' => array (), 'type' => 'hidden' , 'widget_type' => '' , ), 2 => array ( 'title' => '用户名' , 'name' => 'username' , 'description' => '用户名' , 'enum' => array (), 'type' => 'text' , 'widget_type' => '' , ), 3 => array ( 'title' => '真实姓名' , 'name' => 'true_name' , 'description' => '真实姓名' , 'enum' => array (), 'type' => 'text' , 'widget_type' => '' , ), 4 => array ( 'title' => '密码' , 'name' => 'password' , 'description' => '密码' , 'enum' => array (), 'type' => 'text' , 'widget_type' => '' , ), 5 => array ( 'title' => '邮箱' , 'name' => 'email' , 'description' => '邮箱' , 'enum' => array (), 'type' => 'text' , 'widget_type' => '' , ), 6 => array ( 'title' => '是否删除' , 'name' => 'deleted' , 'description' => '是否删除' , 'enum' => array ( 0 => '未删除' , 1 => '已删除' , ), 'type' => 'none' , 'widget_type' => '' , ), 7 => array ( 'title' => '创建时间' , 'name' => 'created' , 'description' => '创建时间' , 'enum' => array (), 'type' => 'none' , 'widget_type' => 'date' , ), 8 => array ( 'title' => '修改时间' , 'name' => 'modified' , 'description' => '修改时间' , 'enum' => array (), 'type' => 'none' , 'widget_type' => 'date' , ), ); $data = array ( 'id' => 2, 'user_id' => 'feac0fa3-3245-11e6-9b90-e03f49a02407' , 'username' => 'admin' , 'true_name' => '系统管理员' , 'email' => '' , 'deleted' => 0, 'created' => '2016-06-14 23:39:52' , 'modified' => '2020-03-12 20:07:48' , ); \Form::getInstance() ->form_schema( $init ) ->form_data( $data ) ->input_submit( '确认保存' , 'class="layui-btn" lay-submit lay-filter="saveBtn"' ) ->create(); |
行内表单
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
<?php require __DIR__ . '/../src/Form.php' ; $init = array ( 0 => array ( 'title' => 'Id' , 'name' => 'id' , 'description' => 'Id' , 'enum' => array (), 'type' => 'hidden' , 'widget_type' => '' , ), 1 => array ( 'title' => '用户id' , 'name' => 'user_id' , 'description' => '用户id' , 'enum' => array (), 'type' => 'text' , 'widget_type' => '' , ), 2 => array ( 'title' => '用户名' , 'name' => 'username' , 'description' => '用户名' , 'enum' => array (), 'type' => 'text' , 'widget_type' => '' , ), 3 => array ( 'title' => '真实姓名' , 'name' => 'true_name' , 'description' => '真实姓名' , 'enum' => array (), 'type' => 'text' , 'widget_type' => '' , ), 4 => array ( 'title' => '密码' , 'name' => 'password' , 'description' => '密码' , 'enum' => array (), 'type' => 'text' , 'widget_type' => '' , ), 5 => array ( 'title' => '邮箱' , 'name' => 'email' , 'description' => '邮箱' , 'enum' => array (), 'type' => 'text' , 'widget_type' => '' , ), 6 => array ( 'title' => '是否删除' , 'name' => 'deleted' , 'description' => '是否删除' , 'enum' => array ( 0 => '未删除' , 1 => '已删除' , ), 'type' => 'none' , 'widget_type' => '' , ), 7 => array ( 'title' => '创建时间' , 'name' => 'created' , 'description' => '创建时间' , 'enum' => array (), 'type' => 'none' , 'widget_type' => 'date' , ), 8 => array ( 'title' => '修改时间' , 'name' => 'modified' , 'description' => '修改时间' , 'enum' => array (), 'type' => 'none' , 'widget_type' => 'date' , ), ); \Form::getInstance() ->input_inline_start() ->form_schema( $init ) ->input_submit( '<i class="layui-icon"></i> 搜索' , ' class="layui-btn layui-btn-primary" lay-submit lay-filter="data-search-btn"' , 'class="layui-btn layui-btn-primary"' ) ->input_inline_end() ->form_class(\LayuiForm::form_class_pane) ->form_method(Form::form_method_get) ->create(); |
table表单
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
|
<?php require __DIR__ . '/../src/Form.php' ; $form_init = array ( 'id' => array ( 'title' => '主键' , 'name' => 'id' , 'description' => '主键' , 'enum' => array (), 'type' => 'hidden' , 'widget_type' => '' , ), 'name' => array ( 'title' => '配置名称' , 'name' => 'name' , 'description' => '配置名称' , 'enum' => array (), 'type' => 'text' , 'widget_type' => '' , ), 'description' => array ( 'title' => '配置描述' , 'name' => 'description' , 'description' => '配置描述' , 'enum' => array (), 'type' => 'text' , 'widget_type' => '' , ), 'input_type' => array ( 'title' => '表单类型' , 'name' => 'input_type' , 'description' => '表单类型' , 'enum' => array ( 'hidden' => '隐藏域' , 'select' => '下拉' , 'radio' => '单选按钮' , 'text' => '文本' , 'textarea' => '多行文本' , 'file' => '上传' , 'none' => '非表单' , 'editor' => '富文本' , 'checkbox' => '复选框' , 'date' => '日期' , ), 'type' => 'select' , 'widget_type' => '' , ), 'created' => array ( 'title' => '创建时间' , 'name' => 'created' , 'description' => '创建时间' , 'enum' => array (), 'type' => 'none' , 'widget_type' => 'date' , ), 'modified' => array ( 'title' => '修改时间' , 'name' => 'modified' , 'description' => '修改时间' , 'enum' => array (), 'type' => 'none' , 'widget_type' => 'date' , ), 'deleted' => array ( 'title' => '删除标记' , 'name' => 'deleted' , 'description' => '删除标记' , 'enum' => array ( 0 => '未删除' , 1 => '已删除' , ), 'type' => 'none' , 'widget_type' => '' , ), ); $form_data = array ( 0 => array ( 'id' => 73, 'name' => 'solution_introduction' , 'value' => '111' , 'description' => '解决方案介绍' , 'input_type' => 'textarea' , 'created' => '2018-12-07 11:44:40' , 'modified' => '2022-03-08 00:32:08' , 'deleted' => 0, ), 1 => array ( 'id' => 72, 'name' => 'tese_product_introduction' , 'value' => '222' , 'description' => '特色产品介绍' , 'input_type' => 'textarea' , 'created' => '2018-12-07 11:43:52' , 'modified' => '2022-03-08 00:32:09' , 'deleted' => 0, ), 2 => array ( 'id' => 71, 'name' => 'new_product_introduction' , 'value' => '333' , 'description' => '新产品介绍' , 'input_type' => 'textarea' , 'created' => '2018-12-07 11:41:37' , 'modified' => '2022-03-08 00:32:09' , 'deleted' => 0, ), 3 => array ( 'id' => 70, 'name' => 'site_pinterest' , 'value' => '' , 'description' => 'Pinterest堪称图片版的Twitter链接' , 'input_type' => 'text' , 'created' => '2018-11-19 11:48:12' , 'modified' => '2019-04-27 14:08:07' , 'deleted' => 0, ), 4 => array ( 'id' => 69, 'name' => 'site_twitter' , 'value' => '' , 'description' => 'Twitter(非官方汉语通称推特)链接' , 'input_type' => 'text' , 'created' => '2018-11-19 11:47:04' , 'modified' => '2019-04-27 14:08:07' , 'deleted' => 0, ), 5 => array ( 'id' => 68, 'name' => 'site_facebook' , 'value' => '' , 'description' => 'Facebook(脸书)链接' , 'input_type' => 'text' , 'created' => '2018-11-19 11:46:07' , 'modified' => '2019-04-27 14:08:07' , 'deleted' => 0, ), 6 => array ( 'id' => 67, 'name' => 'site_google_plus' , 'value' => '' , 'description' => 'Google+SNS社交网站链接' , 'input_type' => 'text' , 'created' => '2018-11-19 11:45:26' , 'modified' => '2019-04-27 14:08:07' , 'deleted' => 0, ), 7 => array ( 'id' => 66, 'name' => 'site_linkedin' , 'value' => '' , 'description' => 'LinkedIn领英链接' , 'input_type' => 'text' , 'created' => '2018-11-19 11:43:53' , 'modified' => '2019-04-27 14:08:07' , 'deleted' => 0, ), 8 => array ( 'id' => 65, 'name' => 'site_livechat_code' , 'value' => '' , 'description' => 'livezilla在线客服代码' , 'input_type' => 'textarea' , 'created' => '2018-11-15 16:45:15' , 'modified' => '2019-04-27 14:08:07' , 'deleted' => 0, ), 9 => array ( 'id' => 64, 'name' => 'site_skype' , 'value' => '' , 'description' => '联系skype' , 'input_type' => 'text' , 'created' => '2018-11-15 16:44:40' , 'modified' => '2019-04-27 14:08:07' , 'deleted' => 0, ) ); \Form::getInstance() ->table( '扩展配置' , '' , 'site_config' , $form_init , $form_data ) ->create(); |
以上就是PHP实现动态表单生成工具详解的详细内容,更多关于PHP表单生成工具的资料请关注服务器之家其它相关文章!
原文链接:https://segmentfault.com/a/1190000041547738