## 自定义字段
当我们的字段不能够满足需求,或者需要对现有字段进行调整,可以使用本字段
## 1.需求例子1:我们需要拓展数组字段,如下效果
![](https://img.kancloud.cn/c3/d5/c3d5724759520057a0cb038f5358aef6_1307x232.png)
里面包含了图片选择,文本框,单选框和下拉框基本满足了一般需求
## 2.在`application\admin\view\custom`新建custom.html文件
### 表格布局
代码如下:可以自行调整自己所需组件
```
<style type="text/css">
.custom-fachoose-image{vertical-align: middle;border:1px dashed #d9d9d9;width:38px;height:38px;line-height:38px;border-radius:2px;background-color:#fbfbfb;text-align:center;cursor:pointer;display:inline-block;box-sizing:border-box;}
.custom-fachoose-file{vertical-align: middle;border:1px dashed #d9d9d9;width:38px;height:38px;line-height:38px;border-radius:2px;background-color:#fbfbfb;text-align:center;cursor:pointer;display:inline-block;box-sizing:border-box;}
</style>
<div class="layui-input-block">
<table class="layui-form-field-label layui-table fieldlist" data-name="{$vo.fieldArr}[{$vo.name}]" data-id="{$vo.name}" data-template="{$vo.name}Tpl" data-tag="tr">
<tr>
<td width="80">图片</td>
<td width="200">附件</td>
<td>姓名</td>
<td>年龄</td>
<td>成绩</td>
<td>城市</td>
<td width="140">性别</td>
<td width="70"></td>
</tr>
<tr><td colspan="10"><button type="button" class="layui-btn btn-append">追加</button></td></tr>
</table>
<textarea name="{$vo.fieldArr}[{$vo.name}]" class="layui-textarea layui-hide">{$vo.value}</textarea>
</div>
<script type="text/html" id="{$vo.name}Tpl">
<tr class="layui-form-item rules-item">
{{# layui.each(d.lists, function(index, item) { }}
<td>
<img data-image src="{{item.row.image || '/assets/img/noimage.jpg'}}" data-original="{{item.row.image || '/assets/img/noimage.jpg'}}" alt="" width="38" height="38" style="vertical-align: bottom;">
<input type="hidden" class="tabbar-img-value" name="{{item.name}}[{{item.index}}][image]" id="c-{{item.data.id}}-{{item.index}}-image" value="{{item.row.image|| ''}}">
<div class="custom-fachoose-image fachoose" data-multiple="false" data-mimetype="image/*" data-input-id="c-{{item.data.id}}-{{item.index}}-image" id="fachoose-c-{{item.data.id}}-{{item.index}}-image"><i class="iconfont icon-add-line"></i></div>
</td>
<td>
<input type="text" class="tabbar-img-value layui-input" name="{{item.name}}[{{item.index}}][file]" id="c-{{item.data.id}}-{{item.index}}-file" value="{{item.row.file|| ''}}" style="vertical-align: bottom;display:inline-block;width: 155px;">
<div class="custom-fachoose-file fachoose" data-multiple="false" data-input-id="c-{{item.data.id}}-{{item.index}}-file" id="fachoose-c-{{item.data.id}}-{{item.index}}-file"><i class="iconfont icon-add-line"></i></div>
</td>
<td><input type="text" class="layui-input" name="{{item.name}}[{{item.index}}][name]" placeholder="姓名" value="{{item.row.name|| ''}}" /></td>
<td><input type="text" class="layui-input" name="{{item.name}}[{{item.index}}][age]" placeholder="年龄" value="{{item.row.age|| ''}}" /></td>
<td><input type="text" class="layui-input" name="{{item.name}}[{{item.index}}][score]" placeholder="成绩" value="{{item.row.score|| ''}}" /></td>
<td><select name="{{item.name}}[{{item.index}}][city]" lay-filter="fieldlist">
<option value=""></option>
<option value="1" {{# if(item.row.city == 1){ }}selected{{# } }}>江苏</option>
<option value="2" {{# if(item.row.city == 2){ }}selected{{# } }}>上海</option>
<option value="3" {{# if(item.row.city == 3){ }}selected{{# } }}>深圳</option>
<option value="4" {{# if(item.row.city == 4){ }}selected{{# } }}>香港</option>
</select></td>
<td><input type="radio" class="layui-input" name="{{item.name}}[{{item.index}}][sex]" value="1" {{# if(item.row.sex == 1){ }}checked{{# } }} title="男" lay-filter="fieldlist"/>
<input type="radio" class="layui-input" name="{{item.name}}[{{item.index}}][sex]" value="2" {{# if(item.row.sex == 2){ }}checked{{# } }} title="女" lay-filter="fieldlist"/></td>
<td><button type="button" class="layui-btn layui-btn-danger btn-remove layui-btn-xs"><i class="iconfont icon-close-fill"></i></button>
<button type="button" class="layui-btn btn-dragsort layui-btn-xs"><i class="iconfont icon-drag-move-2-fill"></i></button></td>
{{# }); }}
</tr>
</script>
<script type="text/javascript">
require.callback = function () {
define('backend/general/config', ['backend', 'form'], function (Backend, Form) {
var Controller = {
setting: function () {
//复制开始
Form.api.bindevent($("form.layui-form"));
$(document).on("change", ".fieldlist .tabbar-img-value", function (e, obj) {
$(this).prev('img').attr("src",$(this).val());
});
//点击追加渲染组件
$(document).on("fa.event.appendfieldlist", ".btn-append", function (e, obj) {
Form.events.faselect(obj);
//需要渲染更多组件可以在这里加
});
}
};
return Controller;
});
}
</script>
```
## 3.然后新建字段
![](https://img.kancloud.cn/3e/39/3e390d0c631f7eda9e409fdf52a8c921_609x491.jpg)
*****
这样就OK了,你可以完善更多的高级自定义字段
ps:需要注意的是,自定义没有经过处理,像上面的例子的字段要展现在前端需要json_decode处理下
- 与1.4版本差异说明
- 序言
- 使用条款
- 安装
- 环境搭建
- 事件
- 表单生成
- 数据限制
- 命令行
- 一键生成CRUD
- 一键生成菜单
- 一键安装
- 一键压缩打包
- 系统配置
- 常规字段
- 特殊字段1:高级下拉框[selectpage]
- 特殊字段2:自定义字段
- 特殊字段3:自定义多图片
- 邮箱/短信类
- 前端&组件
- 后台前端框架
- 文件上传
- table数据表格
- auth权限验证
- 动态显示(Favisible)
- 动态下拉(SelectPage)
- 键值组件(Fieldlist)
- 标签输入
- uniapp教程
- 🔥插件使用说明
- cms内容管理【cms】
- 变量/常量
- 函数
- getCategory - 栏目获取
- catpos - 面包屑
- seo - 生成SEO
- buildCatUrl - 生成栏目URL
- buildContentUrl - 创建内容链接
- 标签
- 公共参数
- 栏目标签
- 列表标签
- 上一页标签
- 下一页标签
- Tags标签
- 万能标签
- 原生标签
- 搜索页
- 筛选页
- 内容详情页
- 模板
- 技巧/问题
- 敏感词检测
- 栏目授权不全
- 循环表格
- 部分虚拟主机tags页面报错
- 内容页分页
- 分页伪静态
- 实现电脑和手机模板分离
- 阅读收费
- 友情链接【links】
- 自定义表单【formguide】
- 调用方式
- 支付插件【pay】
- 支付宝
- 微信
- 万能采集【collection】
- 采集列表规则
- 采集内容规则
- 关于图片
- H5设计【diywap】
- 接口文档【apidoc】
- 返回顶部【returntop】
- 通用数据导出【dataoutput】
- 通用数据导入【dataimport】
- 多通道短信【easysms】
- 塞邮邮箱【saiyouems】
- 第三方登录【synclogin】
- 中文分词【getwords】
- QQ客服【kefu】
- 地图位置【address】
- 智能人机验证【vaptcha】
- 数据转换【v9toyzn】
- 数据转换【dedetoyzn】
- 百度收录查询【baidurecord】
- 蜘蛛访问统计【spider】
- editormd编辑器【editormd】
- Easymde编辑器【easymde】
- 百度ueditor插件【ueditor】
- 敏感词检测【sensitive】
- 邮箱发送【phpmailer】
- 内容收藏【favorite】
- 队列插件【queue】
- 七牛云【qiniu】
- 阿里云oss【alioss】
- 腾讯云【cos】
- 迅搜全文检索【xunsearch】
- 评论插件【comments】
- 会员邀请【invite】
- 快递查询插件【expressquery】
- 礼品卡提货系统【pickup】
- 地区插件【area】
- IP归属地查询【ipregion】
- 百度统计插件【baidutongji】
- 消息通知【notice】
- 微信管理【wechat】
- 在线投票系统【vote】
- 图片处理【imgproc】
- 后台登录主题【adminlogin】
- 文档管理系统【docs】
- 频率限制【throttle】
- 2FA双因子验证【twofas】
- 🔥开发者入驻
- 申请入驻
- 建立私库
- 插件入驻流程
- 模板入驻流程
- 🔥插件开发
- 目录结构
- 数据库
- 测试数据
- 插件信息
- 插件配置
- 核心文件
- 插件函数
- 常见问题
- YznCMS开发遇到错误怎么办?(新手必看)
- 开启调试模式
- 伪静态(URL重写)
- 如何去除访问链接中的index.php
- 各类虚拟主机伪静态使用注意事项
- 如何自定义404页面显示模板
- 管理员登录时提示请于1天后再尝试登录
- 宝塔面板一键部署
- 后台登录时验证码不显示
- 后台密码忘记重置方法
- 关于编辑器的一些说明
- 如何重置后台登录地址
- 如何修改或禁用左侧菜单栏的角标
- composer
- composer简介
- 内置composer
- 常用命令
- 参考文档
- 安全建议
- 更新日记和补丁包