FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架,具体介绍,请查看文档,文档地址为:https://doc./docs/index.html 这里只整理一下在使用过程中用到的小技巧,以便用到的时候查看,其实,在fastadmin的论坛中,有一篇介绍后台表格的文章,说的也不错,如有问题,请先点击:一张图解析FastAdmin中的表格列表的功能 如果还没解决,那就继续往下看了 1、修改默认排序字段 在fastadmin后台中,如果数据表里存在weigh字段,则index页面显示的时候,包括排序按钮是显示三个按钮,如果没有,则显示修改和删除两个按钮 如果不想要使用默认字段weigh来排序的话,只需要改一个地方就好了,就是在table初始化的时候,把默认的排序字段改成你想要其他的字段就行了 如图所示: 2、自定义菜单 在fastadmin中,默认是自带三个操作按钮,分别是拖拽、编辑和删除,如果想要自定义菜单按钮的话,也挺简单,在“一张图解析fastadmin表格列表的功能”文章中有提过,一般是有三种形式:弹出窗口、ajax和新选项卡,就是在 1 {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate,
2 buttons:[
3 {
4 name: 'cow_list',
5 hidden:false,
6 title: '可用牛牛',
7 classname: 'btn btn-xs btn-success btn-dialog',
8 icon: 'fa fa-github-alt',
9 url: 'farm/log/index',
10 },
11 ], formatter: Table.api.formatter.operate}
效果如图所示: 如果是要操作数据的话,比如自带的edit和add,需要再增加 1 cow_list: function () {
2 Controller.api.bindevent();
3 },
因为是index,要特殊一些,因为index方法包含了get和ajax两步操作,get渲染出主页模板,然后再用ajax请求数据,所以还得修改js中index对应的URL地址,比如直接获取参数 3、渲染数据 我们知道,fastadmin底层自带了很多渲染数据的格式,比如
我们可以自定义渲染数据,比如订单查询的时候,一个订单可能会对应多条商品数据,这在index页面显示的时候,就不好显示了,所以可以把每个订单对应的商品数据,都放在一个字段里,示例如下图所示,此处goods字段是控制器中with的一对多的goods模型 1 {field: 'goods',title:'商品',formatter:function (value,data,key) {
2 var content = '';
3 value.forEach((value,key)=>{
4 content += value.title+'-';
5 content += value.attr_name+'*';
6 content += value.num+',';
7 });
8 return content;
9 }},
10 // {field: 'address_address', title: __('Address_address')},
4、js中使用控制器中的数据 如果想在js中调用控制器中的方法,就不能使用$this->view->assign()了,得使用 5、自定义配置 在fast中,自带这很多类型的配置信息,类型比较丰富,有字符、文本、数组、单图、多图等,在做一下配置项的时候非常方便,比如一些比例设置、开关设置等 如果想自定义配置的话,也很简单,首先在application/common/model/config.php中获取配置类型的方法,可以追加自己想要的类型,比如: 1 'radio' => __('Radio'),
2 'array' => __('Array'),
3 'custom' => __('Custom'),
4 'rank' =>'名次规则',
5 ];
6 return $typeList;
7 }
然后在application/admin/view/general/config/index.html文件中,增加自定义配置的格式就行了,比如我这个是借用一下数组的格式 1 {case rank}
2 <dl class="fieldlist" data-name="row[{$item.name}]">
3 <dd>
4 <ins>名次</ins>
5 <ins>分红比例</ins>
6 </dd>
7 <dd><a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> {:__('Append')}</a></dd>
8 <textarea name="row[{$item.name}]" class="form-control hide" cols="30" rows="5">{$item.value}</textarea>
9 </dl>
10 {/case}
最后展示一下效果
6、自定义按钮 这里的自定义按钮并不是表格中的自定义菜单,而是工具栏按钮,如图所示: html代码,切记a标签的title属性一定要有,否则在弹出框中没有顶部的标题: 1 <a href="javascript:;" class="btn btn-default" style="font-size:14px;color:dodgerblue;">
2 <i class="fa fa-dollar"></i>
3 <span class="extend">
4 账户余额:<span id="price">0</span>
5 </span>
6 </a>
7 <a class="btn btn-info btn-dialog btn-withdraw" href="shop/log/withdraw" data-name="withdraw" title="申请提现">
8 <i class="fa fa-leaf"></i>申请提现
9 </a>
10 </div>
在js中增加事件: 1 withdraw: function () {
2 Controller.api.bindevent();
3 },
4 api: {
5 bindevent: function () {
6 Form.api.bindevent($("form[role=form]"));
7 }
8 }
最终效果图如下:
7、二级分类 在有的时候,需要有多级类别,比如添加商品的时候,需要先选择父类,再选择子类,其实,这个有点像三级联动,但是自己写起来比较麻烦,在fast中有已经写好了,详情请见插件中的开发实例中,这里只是整理一部分。 效果如图所示:父类是“心理”,然后下面有“心理测试”,“心理暗示”,两个子类,这样就能实现效果了
此处是源码部分:
1 <div class="form-group"> 2 <label class="control-label col-xs-12 col-sm-2">{:__('Category_id')}:</label> 3 <div class="col-xs-12 col-sm-8"> 4 <div class="form-inline" data-toggle="cxselect" data-selects="first,second"> 5 <select data-rule="required" style="width: 50%" class="first form-control" name="row[category_pid]" data-url="ajax/category?type=science&pid=0"></select>
这里重点是调用了ajax.php下的category方法,并传递两个参数,注意传递pid=0之后,需要更改下category方法,这里就不说明了 。
|
|
来自: shopnc > 《fastadmin》