当前位置:   article > 正文

fastadmin的二次开发教程【简单搭建、多表格问题,API开发】_fastadmin怎么二次开发

fastadmin怎么二次开发

2020年搭建:

1、简单搭建模块,不推荐用官方的一键搭建新模块,看不懂还容易出错

 圈圈是重点,搭建新模块五点缺一不可,少了就得打屁屁了。 

2、简单教程

(1)关于页面有上角生成的导出,切换,列.搜索.

如果不需要的话可以在对应的js文件中添加如下代码.即可屏蔽

  1. //切换卡片视图和表格视图两种模式
  2. showToggle:false,
  3. //显示隐藏列可以快速切换字段列的显示和隐藏
  4. showColumns:false,
  5. //导出整个表的所有行导出整个表的所有行
  6. showExport:false,
  7. //搜索
  8. search: false,
  9. //搜索功能,
  10. commonSearch: false,
  11. //表格上方的搜索搜索指表格上方的搜索
  12. searchFormVisible: false,

(2).对于令人窒息的缓存问题.

很多时候发现更改页面之后没有效果.刷新,清理缓存也无效.让人又爱又恨.

在Confiig.php中将app_debug打开即可

  1. // 应用调试模式
  2. 'app_debug' => Env::get('app.debug', true),

(3).搜索框默认ID搜索.如果需要搜其他字段,在相应控制器添加以下即可 后面为你需要搜索的字段

 protected $searchFields = 'id,name,age';

(4).如果需要对搜索框默认内容进行修改 在对应的js里面初始化表格参数配置之前添加

$.fn.bootstrapTable.locales[Table.defaults.locale]['formatSearch'] = function(){return "试试搜索吧";};

(5).点击搜素不想要那个字段的话可以在对应的js中columns中 添加operate:false即可不展示该字段的搜索

{field: 'name', title: __('Name'),operate:false},

(6).复选框的隐藏

直接注释掉就好了

(7).关闭多条件搜索

operate: false

(8).去掉时间区间的记忆

  1. table.on('post-body.bs.table',function (e,settings,json,xhr) {
  2. $('.datetimerange').each(function () {
  3. $(this).attr('autocomplete','off');
  4. })
  5. });

3、这是多表格的js、HTML代码,跟官方默认的一个页面多个表格不同,这里是页面有表创,弹窗也有表格

  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
  2. var Controller = {
  3. index: function () {
  4. // 初始化表格参数配置
  5. Table.api.init();
  6. Controller.table['first'].call(this);
  7. $(".btn-add").data("area",["60%","82%"]);
  8. var table1;
  9. var table2;
  10. },
  11. table: {
  12. first: function () {
  13. // 表格1
  14. table1 = $("#table1");
  15. table1.bootstrapTable({
  16. url: 'user/validlog/index',
  17. extend: {
  18. index_url: 'user/validlog/index',
  19. add_url: 'user/validlog/add',
  20. del_url: 'user/validlog/del',
  21. },
  22. columns: [
  23. [
  24. {field: 'state', checkbox: true, },
  25. {field: 'id', title: 'ID', operate: false},
  26. {field: 'log_id', title: __('Log_id'), operate: false},
  27. {field: 'username', title: __('Username'), formatter: Table.api.formatter.search},
  28. {field: 'title', title: __('Title'), operate: 'LIKE %...%', placeholder: '模糊搜索'},
  29. {field: 'url', title: __('Url'), formatter: Table.api.formatter.url},
  30. {field: 'ip', title: __('IP'), events: Table.api.events.ip, formatter: Table.api.formatter.search},
  31. {field: 'browser', title: __('Useragent'), operate: false, formatter: Controller.api.formatter.browser},
  32. {field: 'createtime', title: __('Create time'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true},
  33. {field: 'operate', title: __('Operate'), table: table1,
  34. events: Table.api.events.operate,
  35. buttons: [{
  36. name: 'detail',
  37. text: __('Detail'),
  38. icon: 'fa fa-list',
  39. classname: 'btn btn-info btn-xs btn-detail btn-dialog',
  40. url: 'user/validlog/detail'
  41. }],
  42. formatter: Table.api.formatter.operate
  43. }
  44. ]
  45. ]
  46. });
  47. // 为表格1绑定事件
  48. Table.api.bindevent(table1);
  49. },
  50. second: function () {
  51. // 表格1
  52. table2 = $("#table2");
  53. table2.bootstrapTable({
  54. url: 'auth/adminlog/index',
  55. extend: {
  56. index_url: 'auth/adminlog/index',
  57. add_url: 'auth/adminlog/index',
  58. },
  59. columns: [
  60. [
  61. {field: 'state', checkbox: true, },
  62. {field: 'id', title: 'ID', operate: false},
  63. {field: 'username', title: __('Username'), formatter: Table.api.formatter.search},
  64. {field: 'title', title: __('Title'), operate: 'LIKE %...%', placeholder: '模糊搜索'},
  65. {field: 'url', title: __('Url'), formatter: Table.api.formatter.url}
  66. ]
  67. ]
  68. });
  69. // 为表格2绑定事件
  70. Table.api.bindevent(table2);//标记为全部通过
  71. $(document).on('click','.btn-all-pass',function () {
  72. var ids = Table.api.selectedids(table2);
  73. Layer.open({
  74. title: __('Warning'),
  75. content:__('Content'),
  76. btn: [__('OK'),__('Cancel')],
  77. yes: function (index,layero) {
  78. Fast.api.ajax({
  79. url: "user/validlog/add",
  80. type: "post",
  81. data: {ids: ids},
  82. }, function (data) {
  83. //刷新父级表格
  84. parent.$("a.btn-refresh").trigger("click");
  85. Layer.close(index);
  86. parent.Toastr.success(data);
  87. Fast.api.close();//关闭弹窗
  88. });
  89. },success: function (layero, index) {
  90. }
  91. });
  92. });
  93. }
  94. },
  95. add: function () {
  96. Controller.api.bindevent();
  97. // 开启新页面表格需要重新初始化
  98. Table.api.init();
  99. Controller.table['second'].call(this);
  100. },
  101. edit: function () {
  102. Controller.api.bindevent();
  103. },
  104. api: {
  105. bindevent: function () {
  106. Form.api.bindevent($("form[role=form]"));
  107. },
  108. formatter: {
  109. browser: function (value, row, index) {
  110. return '<a class="btn btn-xs btn-browser">' + row.useragent.split(" ")[0] + '</a>';
  111. },
  112. },
  113. }
  114. };
  115. return Controller;
  116. });
  1. //index.html
  2. <div class="panel panel-default panel-intro">
  3. {:build_heading()}
  4. <div class="panel-body">
  5. <div id="myTabContent" class="tab-content">
  6. <div class="tab-pane fade active in" id="one">
  7. <div class="widget-body no-padding">
  8. <div id="toolbar" class="toolbar">
  9. {:build_toolbar('refresh,del,add')}
  10. </div>
  11. <table id="table1" class="table table-striped table-bordered table-hover"
  12. data-operate-detail="{:$auth->check('user/validlog/index')}"
  13. data-operate-detail="{:$auth->check('user/validlog/add')}"
  14. data-operate-del="{:$auth->check('user/validlog/del')}"
  15. width="100%">
  16. </table>
  17. </div>
  18. </div>
  19. </div>
  20. </div>
  21. </div>
  1. //弹窗页面
  2. <div class="panel panel-default panel-intro">
  3. {:build_heading()}
  4. <div class="panel-body">
  5. <div id="myTabContent" class="tab-content">
  6. <div class="tab-pane fade active in" id="one">
  7. <div class="widget-body no-padding">
  8. <div id="toolbar" class="toolbar">
  9. {:build_toolbar('refresh')} &nbsp;<a href="javascript:;" class="btn btn-all-pass btn-success btn-disabled disabled " title="{:__('Addvalid')}" >{:__('Addvalid')}</a>
  10. </div>
  11. <table id="table2" class="table table-striped table-bordered table-hover"
  12. data-operate-detail="{:$auth->check('auth/adminlog/index')}"
  13. width="100%">
  14. </table>
  15. </div>
  16. </div>
  17. </div>
  18. </div>
  19. </div>

怎么?看不懂啊?看不懂滑到底部来问我呗?但是,能用官方文档和例子解决的就算了哈,我也不会

回答,完美!

4、接下来是API接口开发

两张图片实现API的开发,不过会有个问题,访问该咋访问,这样?

用XXX.php访问的是后台,咱们现在访问的是接口,所以得用index.php,也就是

2022年更新续:

官方的一键搭建新模块已炉火纯青,不过新手还是考虑先按上边走一遍

另外, fastadmin多表关联时容易导致表id冲突,以前是需要使用$sort=['表名.id'],现在也不需要了,只需要将控制器里的  $this->relationSearch = false中的false改为true即可

在此附上一键搭建新模块方法:

选择和填上四个箭头所指向的地方,记得表结构加上注释,这样表头的中文名字就是你字段的注释名称,然后点击生成命令,点击立即执行即可,好了,更新结束,更多复杂的请自己看文档。

看啥?进来扫码,一起玩代码石墨文档是一款轻便、简洁的在线协作文档工具,PC端和移动端全覆盖,支持多人同时对文档编辑和评论,让你与他人轻松完成协作撰稿、方案讨论、会议记录和资料共享等工作。https://shimo.im/docs/8PGqp3cHtwVxcTPp

好了,今天的分享就到这里,有问题的留个言,别忘了一键三连,下次我们还会再见!

我是黄啊码,码字的码,退。。。退。。。退。。。朝!

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/449187
推荐阅读
相关标签
  

闽ICP备14008679号