跳转到内容

如何新增自定义字段

如下图所示,后台可以设置各种字段给用户输入。而这些字段其实也可以很方便随意添加的。 img

如下图所示,找到文件\application\extra\form.php,打开后,找到一个类似的字段复制一个出来

img

上面仅仅是配置文件。 下面再打开目录 \application\common\field 如下图所示,找到类似的那个字段,复制一个出来修改即可。

img

至此,新字段就开发设置完毕,后台就可以使用了。

鉴于一个用户订做审核功能,给大家分享一下如何灵活的增加自定义字段 之前的审核员功能,当时是匆匆忙忙加功能,所以就勉强的凑合着用一维数组的字段,大家初次使用是很别扭的,不过管理员自己使用就问题不大。懂得什么意思就好了。

假如要给用户使用的话,用户就会摸不着头脑是什么意思了。这仅仅是一个例子,在使用当中,大家可能会需要各种各样的功能字段,现有的字段只能满足通用的需求,个性需求的话,大家还是要个性化处理一下,更人性货,用户才能更好的理解其中的意思,才好知道怎么使用。

img

img

img

代码如下,给大家参考一下 以下代码是拿一维数组简单修改的,冗余代码在所难免。

<?php
function_exists('urls') || die('ERR');
$jscode = '';
$getuser_url = iurl('index/wxapp.member/getbyids');
if(fun('field@load_js',$field['type'])){
$jscode = <<<EOT
<script type="text/javascript">
jQuery(document).ready(function() {
$('.list_array').each(function () {
var base = $(this);
var basehtml = base.find('div.input-group:first').prop("outerHTML");
//base.append(basehtml);
$(document).on("keypress", "input", function(event) {
return event.keyCode != 13; //回车不能提交表单,请点击提交按钮!
});
//统计数据
var count_value = function(){
var vals = [];
base.find('input.wri').each(function(){
if($(this).val()!='')vals.push($(this).val());
});
//vals.join(',')
base.find('textarea').val( JSON.stringify(vals) );
}
//输入框鼠标离开事件
var blur_act = function(){
base.find('input.wri').on('blur',function(){
count_value();
$.get('{$getuser_url}',{uids:$(this).val()},res=>{
let arr = [];
if(res.code==0){
res.data.forEach(rs=>{
arr.push(rs.username+'('+rs.uid+')')
})
}
$(this).parent().find('.listuser').html(arr.join('、'));
})
}
);
base.find('input.wri').bind('keyup',function(e){
if (event.keyCode == "13") {
layer.alert('请点击底部的提交按钮来提交表单!');
}
});
}
//下移
function down_act(){
base.find("span.down").click(function(){
var that = $(this).parent();
if(that.next().hasClass('input-group')){
that.next().after(that.clone());
that.remove();
init_act();
}else{
layer.alert('到尽头了');
}
});
}
//上移
function up_act(){
base.find("span.up").click(function(){
var that = $(this).parent();
if(that.prev().hasClass('input-group')){
that.prev().before(that.clone());
that.remove();
init_act();
}else{
layer.alert('到尽头了');
}
});
}
//添加按钮事件
var add_act = function(){
base.find('.add').unbind('click').on('click',
function(){
base.find('div.input-group:last').after(basehtml);
base.find('div.input-group:last').find("input").val('');
base.find('div.input-group:last').find(".listuser").html('');
init_act();
}
);
}
//移除按钮事件
var del_act = function(){
base.find('span.del').on('click',
function(){
$(this).parent().remove();
count_value();
count_step();
}
);
}
var count_step = function(){
let j = 0;
base.find('.step').each(function(){
j++;
$(this).html(j+'审');
});
}
var init_act = function(){
base.find('span').off('click');
base.find('input').off('blur');
add_act();
del_act();
blur_act();
down_act();
up_act();
count_value();
count_step();
}
init_act();
});
});
</script>
EOT;
}
$groups = '';
$array = json_decode($info[$name],true);
if($array){
foreach($array AS $key=>$vo){
$j = $key+1;
$listuser=[];
foreach(explode(',',$vo) AS $uid){
if($uid>0){
$user = get_user($uid);
if($user)$listuser[] = $user['username'].'('.$uid.')';
}
}
$listuser = implode('、',$listuser);
$groups .= "<div class='input-group'>
<span class='input-group-addon step'>{$j}审</span>
<input class='wri' type='text' value='{$vo}' placeholder='请输入用户UID' >
<span class='input-group-addon del'><i class='fa fa-fw fa-close'></i></span>
<span class='listuser'>{$listuser}</span>
</div>";
}
}else{
$groups="<div class='input-group'>
<span class='input-group-addon step'>1审</span>
<input class='wri' type='text' value='' placeholder='请输入用户UID' >
<span class='input-group-addon del'><i class='fa fa-fw fa-close'></i></span>
</div>";
}
return <<<EOT
<div class="list_array">
$groups
<div style="margin:8px 20px;">
<button class="layui-btn layui-btn-sm layui-btn-normal add" style="color:#fff;" type="button">增加一级</button>
</div>
<textarea style="display:none;" id="{$name}" name="{$name}" >{$info[$name]}</textarea>
</div>
$jscode
EOT;
;