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 点击加入