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

安装方法

composer require mgckid/form

快速使用

链式操作创建块表单

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

<?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();
?>

数组配置创建块表单

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

<?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();

行内表单

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

<?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表单

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

<?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表单生成工具的资料请关注其它相关文章!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容