找回密码
 注册
首页 ≡≡网络技术≡≡ PHP语言 一张图解析FastAdmin一键生成CRUD表格列表的功能(1) ...

框架 一张图解析FastAdmin一键生成CRUD表格列表的功能(1)

灰儿 2022-7-6 09:37:34
一张图解析FastAdmin一键生成CRUD表格列表的功能(1)
表格2.png

表格-左.png

表格-右.png
功能描述
请根据图片上的数字索引查看对应功能说明。

1.菜单名称和描述
默认生成的CRUD是没有菜单名称和描述显示的,如果需要显示则可以修改权限管理->菜单规则,给对应菜单的添加上备注信息后即可显示,支持HTML。

2、TAB过滤选项卡

在一键生成CRUD时,如果表中存在status字段且为ENUM类型,则会生成相应的TAB过滤选项卡,如果需要生成其它字段的过滤选项卡则可以在使用php think crud时使用--headingfilterfield=你的字段名称来指定字段。

3、.通用搜索
通用搜索的的内容是根据bootstrap-table配置的字段columns决定的,渲染的内容及格式由FastAdmin自动进行渲染,如果需要禁用或删除某一选项,可以在JS中配置operate:false来删除通用搜索中的选项。例如通常情况下我们的在JS中进行字段的配置如下:
  1. {field: 'createtime', title: __('Create Time')},
复制代码
这里默认是启用的通用搜索,针对通用搜索,有以下几个常用的配置:
  1. operate:'=' //用于查询时的操作符,默认为=,为false表示禁用此字段的通用搜索,支持!=、LIKE、NOT LIKE、>、<、>=<=、FIND_IN_SET、IN、NOT IN、BETWEEN、NOT BETWEEN、RANGE、NOT RANGE、NULL、NOT NULL、false
  2. searchList: //用于渲染列表的数据,支持的格式有JSON Array、JSON Object、$.getJSON、Function
  3. addclass: //用于给input或select添加额外的class属性
  4. type: //用于定义input文本框的类型,默认为text
  5. data: //用于给input或select添加额外的属性
复制代码

常用配置示例如下:
  1. //时间区间搜索
  2. {field: 'createtime', title: __('Createtime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
  3. //金额区间搜索
  4. {field: 'money', title: __('Money'), operate: 'RANGE'},
  5. //下拉列表搜索
  6. {field: 'flag', title: __('Flag'), searchList: {"hot": __('Flag hot'), "index": __('Flag index'), "recommend": __('Flag recommend')}, operate: 'FIND_IN_SET', formatter: Table.api.formatter.label},
  7. //动态下拉列表搜索
  8. {field: 'type', title: __('Type'), searchList: $.getJSON("ajax/dynamicselect")},
  9. //禁用通用搜索
  10. {field: 'keywords', title: __('Keywords'), operate: false},
复制代码
如果我们需要完全自定义我们的通用搜索栏,我们可以在配置bootstrap-table时定义searchFormTemplate选项来完全重写我们的通用搜索栏,具体请参考开发示例插件中的自定义搜索示

4、工具栏按钮
FastAdmin在一键CRUD时会自动生成添加、编辑、删除、导入、更多按钮的HTML,这些按钮会根据用户所拥有的权限控制基是否显示或隐藏。我们可以在控制器对应的index.html视图文件中任意修改或删除对应的按钮。请特别注意这几个自动生成的按钮都通过基拥有的class属性来绑定相关的事件,例如添加按钮拥有btn-add这个class、框架所已经占用的class如下:
  1. btn-add: 添加按钮使用
  2. btn-edit: 编辑按钮使用
  3. btn-del: 删除按钮使用
  4. btn-import: 导入按钮使用
  5. btn-more: 更多按钮使用
  6. btn-multi: 指操作使用
  7. btn-disabled: 添加此class后则只有在列表有选中数据时按钮才会变为可使用
复制代码
如果我们想点击添加按钮后默认全屏,则可以给添加按钮加上data-area='["100%","100%"]'即可默认全屏
如果我们想自定义按钮并添加事件,我们需要在视图中添加相应的HTML代码,然后在对应的JS文件中添加按钮的执行事件,切记不可在视图中直接编写JS或jQuery代码来绑定事件

5、动态渲染统计信息
很多时候我们需要在页面额外显示服务端传回的动态数据,此时我们只需要在index.html视图中添加
  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="money">0</span>
  5.         单价:<span id="price">0</span>
  6.     </span>
  7. </a>
复制代码

然后在控制器对应的JS中的index方法中添加以下的JS
  1. //当表格数据加载完成时
  2. table.on('load-success.bs.table', function (e, data) {
  3.     //这里可以获取从服务端获取的JSON数据
  4.     console.log(data);
  5.     //这里我们手动设置底部的值
  6.     $("#money").text(data.extend.money);
  7.     $("#price").text(data.extend.price);
  8. });
复制代码
注意务必将这段代码添加在var table = $("#table");之后
其中data.extend.money和data.extend.price就是我们在服务端动态返回的数据,如下
  1. $result = array("total" => $total, "rows" => $list, "extend" => ['money' => 1024, 'price' => 888]);
  2. return json($result);
复制代码
通过以上配置即可动态显示服务端返回的额外数据

6、搜索框
快速搜索在键入关键词时将实时从服务端搜索数据,如果你的数据表数据较大,建议关闭此功能,关闭的方法是使用search:false,其次快速搜索默认只会搜索主键id这个字段,如果你需要搜索其它字段,则需要在服务端你的控制器中定义$searchFields这个值,如下
  1. protected $searchFields = 'id,name,title';
复制代码
这样在快速搜索时将会搜索id,name,title这三个字段。
如果需要修改默认文本框的placeholder,可以在表格初始化前定义
  1. $.fn.bootstrapTable.locales[Table.defaults.locale]['formatSearch'] = function(){return "自定义placeholder文本";};
复制代码

7、工具按钮 浏览模式、显示隐藏列、导出、通用搜索
浏览模式可以切换卡片视图和表格视图两种模式,如果不需要此功能,可以设置showToggle: false
显示隐藏列可以快速切换字段列的显示和隐藏,如果不需要此功能,可以设置showColumns: false,如果想要表格中的字段列默认隐藏可以设置字段属性visible: false即可默认隐藏
导出按钮默认将导出整个表的所有行,如果需要仅导出当前分页的数据,需要设置exportDataType: 'basic',如果想导出选中的行,则可以设置为exportDataType: 'selected',如果不需要此功能,可以设置showExport: false
通用搜索指表格上方的搜索,通用搜索的表单默认是隐藏的,如果需要默认显示,需要设置searchFormVisible: true,如果不需要通用搜索功能,可以设置commonSearch: false。如果想要控制字段列不参考搜索则可以设置字段列属性为operate: false即可。

8、表头  字段配置
默认字段的控制是根据控制器对应的JS来配置的,因此字段配置是通过JS,而在我们的视图index.html中是没有任何字段配置的,通常我们的配置如下:
  1. columns: [
  2.     [
  3.         {checkbox: true},
  4.         {field: 'id', title: __('Id')},
  5.         {field: 'admin_id', title: __('Admin_id')},
  6.         {field: 'category.name', title: __('分类名称'), formatter:Table.api.formatter.search},
  7.         {field: 'category_id', title: __('Category_id'), visible: false},
  8.         {field: 'flag', title: __('Flag'), searchList: {"hot": __('Flag hot'), "index": __('Flag index'), "recommend": __('Flag recommend')}, operate: 'FIND_IN_SET', formatter: Table.api.formatter.label},
  9.         {field: 'genderdata', title: __('Genderdata'), searchList: {"male": __('Genderdata male'), "female": __('Genderdata female')}, formatter: Table.api.formatter.normal},
  10.         {field: 'title', title: __('Title')},
  11.         {field: 'image', title: __('Image'), formatter: Table.api.formatter.image},
  12.         {field: 'images', title: __('Images'), formatter: Table.api.formatter.images},
  13.         {field: 'createtime', title: __('Createtime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
  14.         {field: 'updatetime', title: __('Updatetime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime, visible: false},
  15.         {field: 'weigh', title: __('Weigh'), operate: false, visible: false},
  16.         {field: 'switch', title: __('Switch'), searchList: {"1": __('Yes'), "0": __('No')}, formatter: Table.api.formatter.toggle},
  17.         {field: 'status', title: __('Status'), searchList: {"normal": __('Normal'), "hidden": __('Hidden')}, formatter: Table.api.formatter.status},
  18.     ]
  19. ]
复制代码

字段配置的参数有
  1. checkbox:true, //是否为首列复选框
  2. field:'name' //字段名称,如果启用了关联查询这里可以使用别名,比如:category.name,请注意服务端返回的字段一一对应,如果使用了一个不存在的字段,将不会渲染任何数据
  3. title:'名称' //字段标题,显示于头部的标题
  4. operate:'=' //通用搜索的操作符,详见上方通用搜索介绍
  5. visible:false //字段是否可见,为false时将默认不可见
  6. formatter:Table.api.formatter.search //格式化显示的内容,FastAdmin内部定义了许多通用的格式化方法
  7. events: //定义元素响应的事件
  8. searchList: //定义通用搜索下拉列表的数据
  9. addclass: //通用搜索文本框或下拉列表的额外class
  10. type: //通用搜索文本框的类型
  11. data: //通用搜索文本框或下拉列表的额外属性
复制代码
FastAdmin封装了许多常用的formatter方法,我们可以快速的调用即可。
  1. > `Table.api.formatter.icon` 快速将字段渲染成一个按钮,仅支持Fontawesome按钮
  2. > `Table.api.formatter.image` 快速将字段渲染成图片展示的形式
  3. > `Table.api.formatter.images` 快速将字段渲染成多图片展示的形式,字段数据请以`,`进行分隔
  4. > `Table.api.formatter.status` 快速将字段渲染成状态,默认`normal/hidden/deleted/locked`这四个状态
  5. > `Table.api.formatter.url` 快速将字段渲染成URL框
  6. > `Table.api.formatter.search` 快速将字段渲染成可搜索的链接,点击后将执行搜索
  7. > `Table.api.formatter.addtabs` 快速将字段渲染成可添加到选项卡的链接,点击后将把链接添加到选项卡
  8. > `Table.api.formatter.flag` 快速将字段渲染成标志,仅支持`index/hot/recommend/new`这四种标志
  9. > `Table.api.formatter.label` 快速将字段渲染Label标签
  10. > `Table.api.formatter.datetime` 快速时间戳数据渲染成日期时间数据
  11. > `Table.api.formatter.operate` 操作栏固定按钮
  12. > `Table.api.formatter.buttons` 快速生成多个按钮
  13. > `Table.api.formatter.toggle` 快速生成切换按钮
复制代码

9、checked多选框列  
如果我们需要不需要复选框则移除{checkbox: true}即可

10,分类列  分类名称(关联搜索出分类表的名称)
这里显示的分类名称是根据分类表关联查询出来的结果,如果我们启用关联查询,我们必须在当前控制器中设置属性protected $relationSearch = true;,同时我们的index方法也需要重写,请参考下方的完整代码中PHP部分。如果我们启用了关联查询,当两个表中的字段有冲突时,我们必须在字段中加上别名。请参考下方的完整代码中JS部分。

下一页:
一张图解析FastAdmin一键生成CRUD表格列表的功能(2)
http://www.admin365.cn/thread-46220-1-1.html  

文章来源:
https://www.cnblogs.com/lichihua/p/10466540.html

灰儿 楼主 2022-7-6 19:56:18
http://www.admin365.cn/thread-46220-1-1.html  一张图解析FastAdmin一键生成CRUD表格列表的功能(2)
您需要登录后才可以回帖 登录 | 注册
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。