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

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

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

至此,新字段就开发设置完毕,后台就可以使用了。
鉴于一个用户订做审核功能,给大家分享一下如何灵活的增加自定义字段 之前的审核员功能,当时是匆匆忙忙加功能,所以就勉强的凑合着用一维数组的字段,大家初次使用是很别扭的,不过管理员自己使用就问题不大。懂得什么意思就好了。
假如要给用户使用的话,用户就会摸不着头脑是什么意思了。这仅仅是一个例子,在使用当中,大家可能会需要各种各样的功能字段,现有的字段只能满足通用的需求,个性需求的话,大家还是要个性化处理一下,更人性货,用户才能更好的理解其中的意思,才好知道怎么使用。



代码如下,给大家参考一下 以下代码是拿一维数组简单修改的,冗余代码在所难免。
<?phpfunction_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;;