万能表单功能
-
表单字段类型:
- 文本输入字段:支持单行文本、多行文本、密码等类型。
- 选择字段:支持单选框、复选框、下拉列表等类型。
- 数字输入字段:支持整数、小数等类型。
- 日期和时间字段:支持日期选择器、时间选择器等类型。
- 文件上传字段:支持上传文件、 图像选择 ,并限制文件类型和大小。
-
动态字段显示:
- 根据条件显示或隐藏字段:根据其他字段的值或选择,动态显示或隐藏某些字段。
- 字段依赖关系:某些字段的可用选项或验证规则取决于其他字段的值。
-
字段验证:
- 必填字段验证:确保必填字段不为空。
- 数据格式验证:验证输入数据的格式,如电子邮件、电话号码、URL、地理位置、最少字数限制等。
- 自定义验证规则:允许定义自定义验证规则,以满足特定的业务需求。
-
数据关联:
- 字段选项关联:根据其他字段的值,动态更新字段的选项列表。
- 字段显示内容关联:根据其他字段的值,动态更新字段的显示内容。
-
表单逻辑:
- 条件逻辑:根据用户的输入或选择,显示或隐藏特定的字段或部分。
- 验证规则逻辑:根据用户的输入或选择,动态改变字段的验证规则。
-
数据存储:
- 将用户提交的表单数据存储到数据库或其他数据存储系统中。
- 确保数据的安全性和完整性,包括数据加密、防止重复提交等。
-
数据导出:
- 支持将表单数据导出为常见的文件格式,如CSV、Excel等。
- 允许选择导出的字段和数据范围。
-
权限控制:
- 根据用户角色或权限,限制对表单的访问和操作权限。
- 管理员角色可以查看和编辑所有表单数据,普通用户只能查看和编辑自己的数据。
-
表单预览和编辑:
- 提供预览表单的功能,以便用户在提交之前查看表单的样式和内容。
- 允许用户在提交之前对表单进行编辑和修改。
-
自定义样式:
- 允许用户自定义表单的样式和布局,包括颜色、字体、边框等。
- 提供预设的样式模板供用户选择。
方法列表
设置字段
/*
* 字段信息
* identification 字段标识
* name 字段名称,显示在页面上的
* placeholder 输入框显示的提示
* formtype 表单类型
* value 值
* datas 其他数据
* required 是否必填
* rule 验证规则
* regex 正则验证
* maxlength 最大长度,0不限制
* disabled 是否禁用
* cssClass 样式,数组形式,["div class","input class1 class2"]
* callback 回调函数
* jsfunction js函数
*
*
* */
field($identification, $name, $value = '', $formtype = "text", $datas = [])
csrf字段
csrf_field()
表单提交地址
formAction($url)
method设置 默认post
method($method)
表单标题
formTitle($title)
页面标题
pageTitle($title)
提交|编辑按钮名称
actionName($name)
返回名称
backName($name)
列表页,搜索字段设置
searchField($identification, $placeholder, $value="" , $formtype = "text", $datas = [])
列表页面右上角
[
['actionName'=>'添加','actionUrl'=>url("admin/formtools/testadd"),'cssClass'=>"bg-info"],
['actionName'=>'删除','actionUrl'=>url('admin/formtools/testdel'),'cssClass'=>"bg-danger"]
]
listAction($datas=[])
分页链接追加参数
linkAppend($value=[])
列表字段追加
rightAction($datas, $field = "")
获取表单数据,不显示模板
getData()
表单模板
formView($pageData=[],$view = "")
列表模板
listView($pageData=[],$datas=[])
使用代码
提交编辑
$pageData = getURIByRoute($this->request);
FormTool::create()
->field("id","")->formtype("id","hidden")->value("id",5)
->field("name","名称")->placeholder("name","请输入名称")->value("name",'名称')
->field("password","密码")->placeholder("password","请输入密码")->formtype("password","password")
->field("password2","确认密码")->placeholder("password2","请确认密码")->formtype("password2","password")
->field("cate_id","分类")->placeholder("cate_id","请选择分类")->formtype("cate_id","select")->value("cate_id",2)
->datas('cate_id',[["value"=>1,"name"=>"测试1"],["value"=>2,"name"=>"测试2"]])
->field("name2","只读名称")->placeholder("name2","只读名称")->value('name2','我只能读取')->formtype('name2','readonly')
->field("name3","禁用名称")->placeholder("name3","禁用名称")->value('name3','禁用读取')->disabled('name3',"disabled")
->field("cate_id2","分类2")->placeholder("cate_id2","请选择分类")->formtype("cate_id2","radio")->value("cate_id2",2)
->datas('cate_id2',[["value"=>1,"name"=>"测试3"],["value"=>2,"name"=>"测试4"]])
->field("cate_id3[]","分类3")->placeholder("cate_id3[]","请选择分类")->formtype("cate_id3[]","checkbox")->value("cate_id3[]",[1,2])
->datas('cate_id3[]',[["value"=>1,"name"=>"测试5"],["value"=>2,"name"=>"测试6"]])
->field("des","描述")->placeholder("des","请输入描述")->formtype("des","textarea")->value("des",'描述')
->field("img",['name'=>'图片','placeholder'=>"请选择图片",'formtype'=>"image"])->value("img",'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fc03a255b-2dee-4ec6-afd3-9b5ca0af9d55%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1704401180&t=4586b7dc12b7ad8d9b81e13bc06cb76d')
->field('file',"上传文件")->placeholder("file","请选择文件")->formtype("file","file")
->csrf_field()
->formTitle("万能模型编辑")
->pageTitle("模型管理")
->formAction(url('admin/formtools/testdo'))
->formView($pageData);
列表
$pageData = getURIByRoute($this->request);
$datas = DB::table('module_formtools_banners as banners')
->leftJoin("module_formtools_banner_cate as banner_cate",'banners.cate_id','banner_cate.id')
->select(['banners.*','banner_cate.name as cate_id'])
->paginate(getLen());
return FormTool::create()
->field("id","ID")
->field("title","名称")
->field("url",'图片')
->field("cate_id","分类")
->rightAction([
['actionName'=>'编辑','actionUrl'=>url("admin/formtools/testedit"),'cssClass'=>"btn-success",'param'=>['page'=>$_GET['page']]],
['actionName'=>'删除','actionUrl'=>url('admin/formtools/testdel'),'cssClass'=>"btn-danger","confirm"=>true,'param'=>['page'=>$_GET['page']]
]],"id")
->pageTitle("模型管理")
->formTitle("万能模型列表")
->searchField("title","请输入名称",$all['title']??"")
->searchField("cate_id","请选择分类",$all['cate_id'],"select",[["value"=>1,"name"=>"测试1"],["value"=>2,"name"=>"测试2"]])
->listAction([
['actionName'=>'添加','actionUrl'=>url("admin/formtools/testadd"),'cssClass'=>"bg-info"],
['actionName'=>'删除','actionUrl'=>url('admin/formtools/testdel'),'cssClass'=>"bg-danger"]
])
->linkAppend($all)
->listView($pageData,$datas);