PHP实现动态表单生成工具详解

吾爱主题 阅读:177 2022-11-03 16:23:00 评论:0

表单包含多种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.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容