腾讯云优惠券

呆错后台管理框架表单字段模块使用与扩展教程

人气:96 更新:2022-11-12
网站后台>系统>字段管理,添加的动态表单字段在开发插件时可以直接调用并输出,同时提供API接口供应用插件开发时调用,具体请参考开发手册动态字段章节。

关于动态表单字段

  • 可通过“筛选”按钮按状态、操作名、应用名、搜索关键字筛选数据结果
  • 可通过“操作”按钮对选中的表单字段进行批量操作(隐藏、审核、删除)
  • 可通过“添加”按钮自行新增任意应用插件的表单字段属性
  • 在开发应用插件时可直接按DaiCuo表单的规则定义,通常用于应用插件固定的初始字段。
  • 可通过API接口将动态扩展的表单字段与初始字段合并后生成完整的表单字段(如:DaiCuoCms),需开发者在表单生成时合并。
  • 在定义动态表单字段时同时定义data-*属性可控制“表格数据”的展示字段、筛选字段,具体参考开发手册。
  • 应用插件添加自身的“字段管理”管理入口,如(admin/field/index?parent=index&op_module=index)

动态字段管理
daicuoField01.png

首页应用自身的字段管理界面预览
daicuoField03.png

后台添加表单定段
以json格式定义,支持的属性有,同时data-开头的属性为bootstrapTable的属性,根据需要自行决定。

{
    "type": "text",
    "relation": "eq",
    "validate": "email",
    "scene": "save",
    "data-visible": false,
    "data-filter": false
}

表单字段常用属性

  • type (表单input类型,可选的值有:text|textarea|editor|image|checkbox|radio|select|switch|custom等)
  • title (字段标题 字符串)
  • option (表单类型checkbox|radio|select|switch|custom时的选项列表,数组key=>value模式)
  • order (表格显示此字段的顺序 数字值)
  • validate (表单验证规则 参考TP内置规则)
  • scene (表单验证场景)
  • form-order (表单排序字段)
  • data-title (表格展示数据的标题 字符串)
  • data-filter (是否在筛选条件处增加此字段 true|false)
  • data-visible (是否在表格数据列表处显示此字段 true|false)
  • data-relation (查询关系 like|eq|neq|gt|lt|egt|elt)
  • data-sortable (是否排序 true|false)

表单字段.png

控制器开发实例
以 apps/index/index/controller/index.php 为例

public function index()
{
    //获取表单字段列表
    $fields = model('common/Term','loglic')->metaList($this->site['module'], $this->site['controll'], $this->site['action']);
    //表单字段基础属性
    $fields = DcFields($fields, $data);
    //表单字段高级属性
    $fields = DcFormItems($fields);
    //生成bootstrap样式的表单
    $this->assign('form',DcBuildForm([
        'name'     => 'admin/category/create',
        'class'    => 'bg-white form-create',
        'action'   => DcUrl('admin/category/save'),
        'method'   => 'post',
        'submit'   => lang('submit'),
        'reset'    => lang('reset'),
        'close'    => false,
        'disabled' => false,
        'ajax'     => true,
        'callback' => false,
        'data'     => $data,
        'items'    => $fields,
    ]);
}

控制器表单验证实例

通过查询条件先查出表单字段列表后筛选出验证规则后通过验证器进行验证。
//获取表单字段列表
$fields = model('common/Field','loglic')->forms(['module'=>'user','controll'=>['eq','edit'],'action'=>['eq','index']]);
//获取验证规则列表
$rules = array_column(DcFormItems($fields),'validate','name');
//实例化验证器
$validate = new \think\Validate($rules);
if(!$validate->check(input('post.'))){
    $this->error($validate->getError());
}