需求场景:
后台设置前端的固定话费充值金额。编辑时要求能够增删改,给到前端的数据,是要根据金额正序排列,用fastadmin的键值组件(Fieldlist),使用Art-Template模板语法自定义模板。
最终效果如下图所示:
在编辑页面,增加如下代码:
<dl class="fieldlist" data-name="row[recharge_money]" data-template="moneytpl">
<dd>
<ins>固定充值金额</ins>
</dd>
<dd>
<a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> 追加</a>
</dd>
<textarea name="row[recharge_money]" class="form-control hide" cols="30" rows="5">{$row.recharge_money}</textarea>
</dl>
<!--定义模板,模板语法使用Art-Template模板语法-->
<script type="text/html" id="moneytpl">
<dd class="form-inline">
<input type="number" name="[<%=index%>][value]" class="form-control" value="<%=value%>" size="10">
<span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span>
</dd>
</script>
在控制器中,将接收到的金额,根据金额大小进行正序排列。
if (stripos($params['recharge_money'], 'value')) {
// 对有修改的充值金额的情况,进行重新整理
$params['recharge_money'] = json_decode($params['recharge_money'], true);
$params['recharge_money'] = array_column($params['recharge_money'], 'value');
sort($params['recharge_money']);
$params['recharge_money'] = json_encode($params['recharge_money']);
}