[TOC] # 字段管理 模型添加的时候,我们可能只选了一些常用的预设好了的字段,还有更多字段是需要我们自行添加的 一样是在“模型管理”中,找到需要添加字段的模型 ![](https://img.kancloud.cn/ca/44/ca44e1bc654a344839fa07a03bb896bc_1108x146.png) 点击“字段”操作按钮 ![](https://img.kancloud.cn/68/30/68300a941fbda04da5601e968d9a5f6f_1102x381.png) 这样你就可以管理字段了。 字段管理,除了往数据表管理对应字段以外(如:字段名、类型、默认值等),该字段在整个后台数据管理的设置都在这里进行(如:表单、列表是否显示怎么显示、选项等等都在这里管理),生成模型的时候会将字段信息写入到模型的`form`属性中。 # 表单字段介绍 ![](https://img.kancloud.cn/f2/aa/f2aaea2a226bbb2e442f08e1b48a30ca_1301x608.png) ~~~ /** 表单form属性 */ $this->form = [ 'id' => [ 'type' => 'integer', 'name' => 'ID', 'elem' => 'hidden', ], 'title' => [ 'type' => 'string', 'name' => '标题', 'form' => 'text', 'list' => 0, ], 'create_time' => [ 'type' => 'integer', 'name' => '创建日期', 'elem' => 0, 'list' => [ 'minWidth' => '145', ], ], 'update_time' => [ 'type' => 'integer', 'name' => '修改日期', 'elem' => 0, 'list' => [ 'minWidth' => '145', ], ], ]; ~~~ 1、字段名 都懂得起这个填什么!应该采用小写加下划线方式命名,每个字段对应form下的一个键,更多细节务必看下前面章节"规范" 2、字段名称 人类可读名称,比如:标题、用户名 生成到form对应字段属性:`name` 数据表对应到`COMMENT`注释中 3、系统字段 一旦设置为系统字段,后期不允许删除该字段 4、表单类型 添加或修改的时候对应的表单显示类型 生成到form对应字段属性:`elem` 有些表单可能还需要与5,6,7,8,9通过配合完成功能 5、关联信息 当表单为`relation`设置对应的关联模型信息,应该为`belongsTo`类型的关联,只填写模型名即可 生成到form对应字段属性:`foreign` 6、选项值列表 当表单为radio、select、xmselect、checkbox等,在该字段中进行选项的设定 生成到form对应字段属性:`options` 7、表单项属性 直接给该字段添加自定义的根属性 ![](https://img.kancloud.cn/dd/40/dd4034c32ff8bac7aaef592f2124b94a_499x94.png) ~~~ 'title' => [ 'type' => 'string', 'name' => '标题', 'elem' => 'text', 'a' => 'aa', 'b' => 'bb', ], ~~~ ![](https://img.kancloud.cn/34/1a/341af8434fb07f8f9f42824e5f28eacb_684x90.png) 现在给字段定义了一个`form_group`的属性,对应的值应该是模型中`表单分组名`中的其中一项,这样表单字段分组就设置好了 ![](https://img.kancloud.cn/9a/81/9a818d8d26492d6fe9b39a7627db18ca_856x250.png) ![](https://img.kancloud.cn/15/e9/15e91dacfcd82cd02bc3756f12ac7d82_690x74.png) ~~~ 'title' => [ 'a' => [ 'a' => 'aa', 'b' => 'bb', ], ], ~~~ 值支持是一个json格式字符串,生成的时候可以解析为数组,这样可以变向实现定义多维数组 8、标签属性 给该字段的表单指定一些自定义的标签属性 生成到form对应字段属性:`attrs` ![](https://img.kancloud.cn/09/f2/09f2635ef09adeac41171946c3be3fe6_498x83.png) ~~~ 'title' => [ 'type' => 'string', 'name' => '标题', 'elem' => 'text', 'attrs' => [ 'data-id' => '11', 'data-x' => 'xxx', ], ], ~~~ 然后到添加或修改页面,F12查看下生成的网页代码: ![](https://img.kancloud.cn/c1/47/c1475172ce81eac791ee43b59d7207b1_598x266.png) 说明`attrs`下的属性都会被定义到网页标签上 不要通过该方式自定义class或id标签属性,容易造成样式丢失,你可以利用系统现有给到的选择器进行你的业务处理 比如:. woo-form-name-字段名 . woo-form-name-字段名 .layui-input 你可以多通过F12多去发现系统默认给出选择器的规律 也不建议通过value标签属性做默认值,控制器中可以通过其他方式设置默认值 9、上传配置 生成到form对应字段属性:`upload` ![![](https://img.kancloud.cn/fa/a9/faa974a328d8b6dce57274f41e2d86aa_409x214.png)](images/screenshot_1601190398857.png) ~~~ 'avatar' => [ 'type' => 'string', 'name' => '头像', 'elem' => 'image', 'upload' => [ 'maxSize' => '512', 'validExt' => 'png|jpg|gif|jpeg' ], 'list' => 'file', ], ~~~ maxLength:多文件(图片)上传时有效,至少最多上传文件的数量 maxSize:单文件最大上传的大小,单位:KB url: 上传接口的URL地址,一般不需要,如遇特殊自定义情况可以设置 nameFiled:单文件情况下,用于存储文件名称的字段名 sizeField:单文件情况下,用于存储文件大小的字段名 validExt:允许上传文件的后缀,多个之间|分割 10、表单触发器 用于当该字段的值为指定值时,指定字段才显示;否则隐藏 生成到`formTrigger`模型属性 ![](https://img.kancloud.cn/a6/0e/a60e08657bb845428e746a36b80454da_400x89.png) ~~~ $this->formTrigger = [ 'type' => [ 'func' => 'url|func', 'url' => 'url|target', ], ]; ~~~ 参考快捷方式模型`Shortcut`,该设置表示:url、func、target字段默认隐藏,当type字段值为func时,显示url和func字段;当type字段值为url时,显示url和target字段 11、列表模板 该字段在列表页显示的方式 生成到form对应字段属性:`list`的`templet` 可以是一个模板名称,也可以是一个模板具体自定义代码 ![](https://img.kancloud.cn/8a/36/8a36a943572586d10e024e98e5a17b52_403x127.png) ~~~ 'title' => [ //... 'list' => [ 'templet' => 'show', 'minWidth' => '200', ] ], ~~~ ![](https://img.kancloud.cn/a3/27/a3275350c7b1c7ed1d91150dd4190397_419x134.png) ~~~ 'title' => [ //... 'list' => [ 'templet' => '<div>我是{{d.title}},我创建于{{d.create_time}}</div>', 'minWidth' => '200', ] ], ~~~ 列表页: ![](https://img.kancloud.cn/b6/c1/b6c115646ed70d4a60417e00bb7abf26_706x88.png) 如果自定义模板内容,必须用div包一下,通过d变量获取当行数据,更多请查验后面章节:自定义列表模板 12、列表属性 给字段列表设置除`templet`以外的其他属性 生成到form对应字段属性:`list` 常用的列表属性:[https://www.layui.com/doc/modules/table.html#cols]() 13、详情模板 该字段在详情页显示的方式 生成到form对应字段属性:`detail`的`templet` 可以是一个模板名称,也可以是一个模板具体自定义代码 支持的模板同列表 详情页除了明确设置为0不显示,默认都会显示 14、详情属性 给字段详情设置除`templet`以外的其他属性 生成到form对应字段属性:`detail` 一般比较少用 15、列表搜索 设置列表搜索方式,默认都不会做搜索,必须明确指定 生成到form对应字段属性:`list_filter` ![](https://img.kancloud.cn/52/85/52859471d6a63212a3b12ba431f0d5a3_396x302.png) ~~~ 'title' => [ //... 'list_filter' => [ 'templet' => 'string', 'a' => 'aa', 'b' => 'bb', 'attrs' => ['data-id' => '2'], ], ], ~~~ 16、搜索属性 给搜索准备一些自定义属性 生成到form对应字段属性:`list_filter` 17、搜索标签属性 生成搜索标签的时候的标签属性 生成到form对应字段属性:`list_filter`下`attrs` 18、真实字段 适用于场景:表单需要显示一个字段(表单),但数据表中并不需要该字段 19、类型 生成到数据表的时候,指定该字段的 数据类型 20、长度/值 生成到数据表的时候,指定该字段的 长度/值 根据你的数据类型:有些类型不能填(text,date...),有些必须填(char,varchar,decimal),有些类型选填(tinyint,int),到底怎么填自行判断 21、默认值 生成到数据表的时候,指定该字段的 默认值 22、NOT NULL 生成到数据表的时候,指定该字段的 是否允许为空 23、unsigned 生成到数据表的时候,指定整型字段是否 无符号 24、自动增长 如果需要添加主键的时候,设置自动增长 25、索引 生成到数据表的时候,指定该字段的索引情况 26、于...之后 用于调整 字段在数据表中的位置 27、数据验证 用于定义该字段的数据验证规则 生成到`validate`模型属性 ![](https://img.kancloud.cn/f5/45/f545328e2616ff293e4ea2b861a0122f_1110x194.png) ~~~ $this->validate = [ 'title' => [ [ 'rule' => ['require'], 'on' => 'add', 'message' => '请填写', ], [ 'rule' => ['length', '6,16'], ], [ 'rule' => ['unique', 'test'], ], ], ]; ~~~ 支持TP自己所有的规则[https://www.kancloud.cn/manual/thinkphp6_0/1037629]() 更多说明,请查看“模型验证”