PHP实现动态表单生成工具详解
表单包含多种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
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。