后台根据数据库自动生产表单

1、查询表结构
2、freach循环判断生成字符串
(1)根据字段名判断
(2)根据字段类型判断
(3)下拉、单选、复选框根据注释截取表单title和选项值
(4)其他类型的表单添加表单title
3、生成的字符串,写入html
使用效果
在这里插入图片描述

使用下方类库

<head>
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <link href="http://real.jp893.com/css/layout.css" type="text/css" rel="stylesheet">
        <link href="http://real.jp893.com/css/real.css" type="text/css" rel="stylesheet">
        <link href="http://real.jp893.com/font/icon.css" type="text/css" rel="stylesheet">
        <link href="http://real.jp893.com/css/tag.css" type="text/css" rel="stylesheet">
        <title>real</title>
     
    </head>
<?php
//  
     require_once  './form.php';
     $form=new Form;
    //  $form
    $name="name";
    $value="name";
 $annotation="你猜";
    echo $form->label("文本框", $form->text(  $name,   $value,   $options = ["s"=>"szz","id"=>"id"]));
    
    echo $form->label("开关", $form->switcher(  $name,   $value,   $options = ["s"=>"szz","id"=>"id"])); 
    echo $form->label("密码框", $form->password(  $name,   $value,   $options = ["s"=>"szz","id"=>"id"]));
    echo $form->label("隐藏框", $form->hidden(  $name,   $value,   $options = ["s"=>"szz","id"=>"id"]));
    echo $form->label("邮箱框", $form->email(  $name,   $value,   $options = ["s"=>"szz","id"=>"id"]));
    echo $form->label("链接框", $form->url(  $name,   $value,   $options = ["s"=>"szz","id"=>"id"]));
    echo $form->label("多行文本框", $form->textarea(  $name,   $value,   $options = ["s"=>"szz","id"=>"id"]));
    
    echo $form->label("多行文本框", $form->radio($name, $value = "1=支付宝,2=微信,3=余额", $checked = 2, $options = []));
    echo $form->label("多行文本框", $form->checkbox($name, $value = "1=支付宝,2=微信,3=余额", $checked ="2,1", $options = []));
    

自动生成表单类库,未完成

<?php

// namespace fast;
 
/**
 * 表单元素生成
 * @class   Form
 * @package fast
 * @method string token() static 生成Token
 * @method string label(string $name, string $value = null, array $options = []) static label标签
 * @method string input($type, $name, string $value = null, array $options = []) static 按类型生成文本框
 * @method string text(string $name, string $value = null, array $options = []) static 普通文本框
 * @method string password(string $name, array $options = []) static 密码文本框
 * @method string hidden(string $name, string $value = null, array $options = []) static 隐藏文本框
 * @method string email(string $name, string $value = null, array $options = []) static Email文本框
 * @method string url(string $name, string $value = null, array $options = []) static URL文本框
 * @method string file(string $name, array $options = []) static 文件上传组件
 * @method string textarea(string $name, string $value = null, array $options = []) static 多行文本框
 * @method string editor(string $name, string $value = null, array $options = []) static 富文本编辑器
 * @method string select(string $name, array $list = [], string $selected = null, array $options = []) static 下拉列表组件
 * @method string selects(string $name, array $list = [], string $selected = null, array $options = []) static 下拉列表组件(多选)
 * @method string selectpicker(string $name, array $list = [], string $selected = null, array $options = []) static 下拉列表组件(友好)
 * @method string selectpickers(string $name, array $list = [], string $selected = null, array $options = []) static 下拉列表组件(友好)(多选)
 * @method string selectpage(string $name, string $value, string $url, string $field = null, string $primaryKey = null, array $options = []) static 动态下拉列表组件
 * @method string selectpages(string $name, string $value, string $url, string $field = null, string $primaryKey = null, array $options = []) static 动态下拉列表组件(多选)
 * @method string citypicker(string $name, string $value, array $options = []) static 城市选择组件
 * @method string switcher(string $name, string $value, array $options = []) static 切换组件
 * @method string datepicker(string $name, string $value, array $options = []) static 日期选择组件
 * @method string timepicker(string $name, string $value, array $options = []) static 时间选择组件
 * @method string datetimepicker(string $name, string $value, array $options = []) static 日期时间选择组件
 * @method string daterange(string $name, string $value, array $options = []) static 日期区间组件
 * @method string timerange(string $name, string $value, array $options = []) static 时间区间组件
 * @method string datetimerange(string $name, string $value, array $options = []) static 日期时间区间组件
 * @method string fieldlist(string $name, string $value, string $title = null, string $template = null, array $options = []) static 字段列表组件
 * @method string cxselect(string $url, array $names = [], array $values = [], array $options = []) static 联动组件
 * @method string selectRange(string $name, string $begin, string $end, string $selected = null, array $options = []) static 选择数字区间
 * @method string selectYear(string $name, string $begin, string $end, string $selected = null, array $options = []) static 选择年
 * @method string selectMonth(string $name, string $selected = null, array $options = [], string $format = '%m') static 选择月
 * @method string checkbox(string $name, string $value = '1', string $checked = null, array $options = []) static 单个复选框
 * @method string checkboxs(string $name, array $list = [], string $checked = null, array $options = []) static 一组复选框
 * @method string radio(string $name, string $value = null, string $checked = null, array $options = [])) static 单个单选框
 * @method string radios(string $name, array $list = [], string $checked = null, array $options = [])) static 一组单选框
 * @method string image(string $name = null, string $value, array $inputAttr = [], array $uploadAttr = [], array $chooseAttr = [], array $previewAttr = []) static 上传图片组件
 * @method string images(string $name = null, string $value, array $inputAttr = [], array $uploadAttr = [], array $chooseAttr = [], array $previewAttr = []) static 上传图片组件(多图))
 * @method string upload(string $name = null, string $value, array $inputAttr = [], array $uploadAttr = [], array $chooseAttr = [], array $previewAttr = []) static 上传文件组件
 * @method string uploads(string $name = null, string $value, array $inputAttr = [], array $uploadAttr = [], array $chooseAttr = [], array $previewAttr = []) static 上传文件组件(多文件))
 * @method string button(string $value = null, array $options = []) static 表单button
 */


/**
 *
 * 表单元素生成
 * @from https://github.com/illuminate/html
 * @package fast
 */
class Form
{
    //生成form行
    public $label_template ='<div class="real-row"> <div class="real-col-4" style="line-height: 34px;"> {annotation} </div> <div class="real-col-20 " > {input}</div> </div>';
    //普通文本框
    public $text_template =  '<input class="real-input real-round" type="text"  name="{name}" value="{value}" {options}   >';
    //密码文本框
    public $password_template = '<input class="real-input real-round" type="password"  name="{name}" value="{value}" {options}  >';
    //隐藏文本框
    public $hidden_template = '<input  type="hidden"  name="{name}" value="{value}" {options} >';
    //邮箱文本框
    public $email_template = '<input class="real-input real-round" type="emal"  name="{name}" value="{value}" {options}  >';
    //链接文本框
    public $url_template = '<input class="real-input real-round" type="url"  name="{name}" value="{value}" {options}  >'; 
    //  生成switch组件 开关
    public $switcher_template = '<input class="real-switch real-onoff" type="checkbox" name="{name}" value="{value}" {options}  >';
    //多行文本框
    public $textarea_template = '<textarea class="real-text real-ful"  name="{name}"   {options} >{value}</textarea>';
    //富文本编辑器
    public $editor_template = "";
    //滑块
    public $slider_template = "";
    //下拉单选
    public $select_template = "";
    //下拉多选
    public $selects_template = "";
    //动态下拉单选
    public $selectpage_template = "";
    //动态下拉多选
    public $selectpages_template = "";
    //  生成联动下拉列表
    public  $cxselect_template = "";
    //单选
    public $radio_template = '<span class="real-radio real-blue">  <label> <input type="radio" name="{name}"  value="{value}"  {options} ><em></em>   <span>{annotations}</span> </label>  </span>'; 
    public  $checkbox_template = '<span class="real-checkbox">   <label>   <input type="checkbox" name="{name}[]"  value="{value}"  {options}><em></em>  <span>{annotations}</span>  </label>  </span>';
    public  $image_template = "";
    public  $images_template = "";
    public $upload_template = "";
    public $uploads_template = ""; 

    /**
     * 设置是否转义
     * 获取转义编码后的值
     * 生成Token
     */
    /*
     * 生成Label标签
     *
     * @param string $name
     * @param string $value
     * @param array  $options
     * @return string
     */
    public function label($annotation, $input) {
         
        $str=str_replace('{annotation}',$annotation,$this->label_template);
        // var_dump($str,$annotation,$input);die;
        $str=str_replace('{input}',$input,$str);
        
        return $str;
    }

    /**
     * 替换模板
     *
     * @param string $name
     * @param string $value
     * @param array  $options
     * @return string
     */
    public function template($name, $value, $options = [],$temp) {
      
        //打开这个模板
        // $tempdata=fopen("test.html","r");
        //读取模板中的内容
        // $str=fread($tempdata,filesize("test.html"));
        
        //替换模板中的内容
        $str=str_replace('{name}',$name,$temp);
        $str=str_replace('{value}',$value,$str);
        $stroptions="";
        
            foreach ($options as $key =>$val ) {
                
              $stroptions.= ' '.$key.'="'.$val.'" ';
                // code...
            }
        // var_dump();die;
              $str=str_replace('{options}', $stroptions  ,$str);
       
        
        // var_dump($str,$text_template);die;
        return $str;
        
    }  /**
     * 生成普通文本框
     *
     * @param string $name
     * @param string $value
     * @param array  $options
     * @return string
     */
    public function text($name, $value = null, $options = []) {
        
        // var_dump($str,$text_template);die;
        return $this->template($name, $value, $options = [],$this->text_template);
        
    }
 

    /**
     * 生成密码文本框
     *
     * @param string $name
     * @param array  $options
     * @return string
     */
    public function password($name,$value = null, $options = []) {
           //替换模板中的内容 
        return $this->template($name, $value, $options = [],$this->password_template);
    }

    /**
     * 生成隐藏文本框
     *
     * @param string $name
     * @param string $value
     * @param array  $options
     * @return string
     */
    public function hidden($name, $value = null, $options = []) {
        
        return $this->template($name, $value, $options = [],$this->hidden_template);
    }

    /**
     * 生成Email文本框
     *
     * @param string $name
     * @param string $value
     * @param array  $options
     * @return string
     */
    public function email($name, $value = null, $options = []) {
        return $this->template($name, $value, $options = [],$this->email_template);
        
    }

    /**
     * 生成URL文本框
     *
     * @param string $name
     * @param string $value
     * @param array  $options
     * @return string
     */
    public function url($name, $value = null, $options = []) {
        
        return $this->template($name, $value, $options = [],$this->url_template);
    }


    /**
     * 生成switch组件
     *
     * @param string $name
     * @param mixed  $value
     * @param array  $options
     * @return string
     */
    public function switcher($name, $value,  $options = []) {
        
        if ($checked) {
            $options['checked'] = 'checked';
        }
        return $this->template($name, $value, $options = [],$this->switcher_template);
        
    }

    /**
     * 生成多行文本框
     *
     * @param string $name
     * @param string $value
     * @param array  $options
     * @return string
     */
    public function textarea($name, $value = null, $options = []) {
        
        return $this->template($name, $value, $options = [],$this->textarea_template);
        
    }

    /**
     * 生成富文本编辑器
     *
     * @param string $name
     * @param string $value
     * @param array  $options
     * @return string
     */
    public function editor($name, $value = null, $options = []) {}
    /**
     * 生成滑块
     *
     * @param string $name
     * @param string $min
     * @param string $max
     * @param string $step
     * @param string $value
     * @param array  $options
     * @return string
     */
    public function slider($name, $min, $max, $step, $value = null, $options = []) {}

    /**
     * 生成下拉列表框
     *
     * @param string $name
     * @param array  $list
     * @param mixed  $selected
     * @param array  $options
     * @return string
     */
    public function select($name, $list = [], $selected = null, $options = []) {
        
    }

    /**
     * 下拉列表(多选)
     *
     * @param string $name
     * @param array  $list
     * @param mixed  $selected
     * @param array  $options
     * @return string
     */
    public function selects($name, $list = [], $selected = null, $options = []) {}


    /**
     * 生成动态下拉列表
     *
     * @param string $name       名称
     * @param mixed  $value
     * @param string $url        数据源地址
     * @param string $field      显示的字段名称,默认为name
     * @param string $primaryKey 主键,数据库中保存的值,默认为id
     * @param array  $options
     * @return string
     */
    public function selectpage($name, $value, $url, $field = null, $primaryKey = null, $options = []) {}


    /**
     * 生成动态下拉列表(复选)
     *
     * @param string $name       名称
     * @param mixed  $value
     * @param string $url        数据源地址
     * @param string $field      显示的字段名称,默认为name
     * @param string $primaryKey 主键,数据库中保存的值,默认为id
     * @param array  $options
     * @return string
     */
    public function selectpages($name, $value, $url, $field = null, $primaryKey = null, $options = []) {}




    /**
     * 生成联动下拉列表
     *
     * @param string $url     联动获取数据源的URL地址
     * @param array  $names   联动字段名称
     * @param array  $values  联动字段默认选中的值
     * @param array  $options 扩展属性
     * @return string
     */
    public function cxselect($url, $names = [], $values = [], $options = []) {}
    /**
     * 日期选择器
     * 时间选择器
     * 日期时间选择器
     * 日期区间
     * 时间区间
     * 日期时间区间
     * 根据传递的值生成option
     */



    /**
     * 生成复选按钮
     *
     * @param string $name
     * @param mixed  $value
     * @param bool   $checked
     * @param array  $options
     * @return string
     */
    public function checkbox($name, $value = null, $checked = null, $options = []) {
                $str="";
         
        if ($checked) {
            $options['checked'] = 'checked';
        }
        $values=explode(",",$value);
        
        foreach ($values as $key => $val) {
             $exp=explode("=",$val); 
            //  var_dump($checkedz);
            if(!empty($checked)){ 
                $checkedz=explode(",",$checked); 
                if (in_array($exp[0],$checkedz)) {
                    $options['checked'] = 'checked';
                }else{
                     unset($options['checked'] ) ;
                }
             
            }else{
                unset($options['checked'] ) ;
            }
             $radio_template=   str_replace('{annotations}', $exp[1]  ,$this->checkbox_template);
             
             $str.= $this->template($name, $exp[0], $options  ,$radio_template); 
        }
         return $str;
        
    }



    /**
     * 生成单选按钮
     *
     * @param string $name
     * @param mixed  $value
     * @param bool   $checked
     * @param array  $options
     * @return string
     */
    public function radio($name, $value = null, $checked = null, $options = []) {
        $str="";
         
        if ($checked) {
            $options['checked'] = 'checked';
        }
        $values=explode(",",$value);
        
        foreach ($values as $key => $val) {
             $exp=explode("=",$val);
            //  echo "a".$checked;
             
          
            if ($checked==$exp[0]) {
                $options['checked'] = 'checked';
            }else{
                 unset($options['checked'] ) ;
            }
             
             $radio_template=   str_replace('{annotations}', $exp[1]  ,$this->radio_template);
             
             $str.= $this->template($name, $exp[0], $options  ,$radio_template); 
        }
         return $str;
        // radio_template 
    }



    /**
     * 生成上传图片组件(单图)
     *
     * @param string $name
     * @param string $value
     * @param array  $inputAttr
     * @param array  $uploadAttr
     * @param array  $chooseAttr
     * @param array  $previewAttr
     * @return string
     */
    public function image($name = null, $value, $inputAttr = [], $uploadAttr = [], $chooseAttr = [], $previewAttr = []) {}

    /**
     * 生成上传图片组件(多图)
     *
     * @param string $name
     * @param string $value
     * @param array  $inputAttr
     * @param array  $uploadAttr
     * @param array  $chooseAttr
     * @param array  $previewAttr
     * @return string
     */
    public function images($name = null, $value, $inputAttr = [], $uploadAttr = [], $chooseAttr = [], $previewAttr = []) {}

    /**
     * 生成上传文件组件(单文件)
     *
     * @param string $name
     * @param string $value
     * @param array  $inputAttr
     * @param array  $uploadAttr
     * @param array  $chooseAttr
     * @param array  $previewAttr
     * @return string
     */
    public function upload($name = null, $value, $inputAttr = [], $uploadAttr = [], $chooseAttr = [], $previewAttr = []) {}

    /**
     * 生成上传文件组件(多文件)
     *
     * @param string $name
     * @param string $value
     * @param array  $inputAttr
     * @param array  $uploadAttr
     * @param array  $chooseAttr
     * @param array  $previewAttr
     * @return string
     */
    public function uploads($name = null, $value, $inputAttr = [], $uploadAttr = [], $chooseAttr = [], $previewAttr = []) {}


    /**
     * 生成一个按钮
     *
     * @param string $value
     * @param array  $options
     * @return string
     */
    public function button($value = null, $options = []) {}


}


程序员交流qq群:782974737 点击加入

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值