本文编写于 1328 天前,最后修改于 1114 天前,其中某些信息可能已经过时。

fastadmin踩坑日记-1.初识插件开发

fastadmin是一个国产的基于thinkPHP5和Bootstrap的开箱即用的后台管理系统,适合于快速开发后台,它集成了Bootstrap的响应式设计方式以及优秀的会员权限系统,并且拥有thinkPHP的社区来支持其开发,非常好用,然而好用还是会有坑,特地记一下。

为啥用Fastadmin

最开始自己做的后台是套的图书馆里那本传智播客的《php和mysql程序设计》里面的CMS后台系统,当时觉得已经很厉害了,但始终有一个没法解决的问题就是权限系统,而我这种人又不会这个,也没人教过,就想有没有轮子可以直接用。

在网上找到几个入眼的

其中前两个是基于前端技术栈,Vue+node,后两个是基于php

我思考了两天,感觉前两个还是没干过,太复杂,上手时间太长,况且最后还要用pm2来挂,老服务器上我可是要手动配置Apachevhost,太麻烦了,所以选择了php

然后选择了比较适合开发的Fastadmin,他的优点有:

  1. 自带权限管理
  2. 可以用php think CURD命令自动生成MVC的代码
  3. thinkphp生态不错
  4. 自带bootstrap-table
  5. 自己还有商城,可以在线下载一些插件来用

所以用了这个

但是还是强烈推荐一下Phalapi框架,这个框架用来写api真的是绝佳,入门真的超级简单,并且会自动生成api文档,非常棒。

上手Fastadmin

MVC架构

Fastadmin基于Thinkphp5,所以也是采用了经典的MVC(Model-View-Controller)架构,各层各司其职,互不干扰,

Controller控制器:负责派发任务和处理任务,给视图层View提供数据渲染,给Model层派发读取数据库指令

Model模型层:负责数据库的读写,基础处理

View视图层:负责用户看到的部分,一般都是html文件,通过controller来给数据渲染来实现我们浏览器看到的画面。

了解了这个,然后可以来看看官方快速上手指南了

快速安装

强烈建议直接下载完全包,不要用命令行安装,因为各种包管理软件会出现各种问题,直接下完整包解压就行,方便,然后挂载在web服务器上,定位到public文件夹里正常安装即可

快速上手要先看学习手册

要入手这个框架,首先至少读完第一个,因为官方的文档不是讲的很细致,所以还得去看thinkphp5

Thinkphp5快速入门 这个可以现在趁着肺炎免费领取,之后会变成20块钱,不过我这已经下载了他的mobi版,看看怎么传上来

Thinkphp5完全开发手册

Fastadmin框架开发指南

Fastadmin插件开发指南

生成插件

fastadmin插件是一个简单的集成包,可以快速部署需要的功能,为了实现快速移植,还是决定用插件而非原生开发的形式

直接执行

php think addon -a <你的插件名字> -c create
# 如果和我一样php会出错的,记得用对应的web服务器内的PHP执行,如下
/Applications/XAMPP/xamppfiles/bin/php think addon -a <你的插件名字> -c create

然后在addons文件夹内就会出现插件文件,在初始配置过后,这个时候坑来了

坑1-插件不注册-找不到菜单

addons内的插件文件是根本没有执行的!因为上面那个生成插件的命令是不会帮你注册插件的

必须打包zip后再离线安装后,覆盖到application,在application的文件内才会执行

这个坑导致我死命定位不到侧边栏不出现的原因,所以说开发的话

得在生成插件后配置完毕后打包,卸载原插件,再次安装这个插件后才算正式注册完毕,可以访问到,之后的话要在application内开发,之后再扔回addons,打包,才算开发完成

此外,注意打包的时,不要直接压缩文件夹,要把文件夹下面的全部文件压缩成zip。然后离线安装,这样就不会出现插件配置文件未找到(code:0)的问题了

自动生成菜单

使用命令自动生成MVC框架,生成也就是自带的bootstrap-table表格来进行管理

看这篇就够了,要求是必须要先建立一个表

FastAdmin使用——基本使用篇

下面为摘录

使用命令行创建crud过程:

官方文档详细说明了创建crud的过程,在做项目中用到最多的是创建的命令,我们首先在数据库中创建一个test表(创建crud必须基于表进行创建)进入cmd命令行,然后进入fastadmin文件夹,输入创建的命令。

这里说明一下,我这里输入的是二级菜单,会自动创建一个文件夹student,如果不需要二级菜单则直接输入控制器名就可以了。另外,如果当前表已经有对应的控制器,则会提示错误,创建失败,这时我们需要在命令后面加入 --force=true来创建多的控制器。其余的命令以及问题在官方文档中都有说明。

这时,一个新的crud就创建完成了,下面我们可以到目录中找到相关的代码

控制器——application\admin\controller\student\Student.php

模型层——application\admin\model\Srudent.php

视图层——application\admin\view\student\student

我们发现这是我们熟悉的MVC模式,因为是基于tp5二次开发的,所以是MVC架构,并且tp5的所有代码均可使用。

这里还有一些其他文件:

验证规则——application\admin\validate\Student.php

语言包——application\admin\lang\zh-cn\student\student.php

js文件——public\assets\js\backend\student\student.js

我们在项目中需要更改的文件大概就是这些,而这时我们去访问后台,发现没有我们新生成的student控制器

这是因为我们需要使用命令行对对应的控制器进行生成菜单操作

这时我们刷新页面就会发现已经生成了菜单可以进行访问。

我们还可以通过规则管理来直接管理菜单栏

可以直接修改url,菜单名,图标,权值(操作排版),是否生成菜单,这里说明,每当在代码中新增一个方法时都需要添加一个对应规则,否则当换用户时,无法使用这个方法并会报错,而生成的规则在数据库中有一个规则表可以直接查看,并且可以在角色组中对用户进行分组,然后赋给不同组的用户不同的规则,来控制用户组的权限。

我们发现这里直接给我们生成了页面,具体的如何通过代码来操作页面会在后面的博客写出。

这里说明一下它的url,

有tp开发经验的可以知道前面就是对应的控制器,而后面这个参数ref=addtabs不知道是什么意思,我们可以去掉这个参数访问一下

可以看到没有了左侧菜单栏,所以这个参数是用来生成菜单栏的,具体的实现过程都是封装在框架里的,可以不用关心。

另外,在官方文档中也有说明,如果改变了框架中的核心js,css或其他文件需要使用一键打包在生产环境下才能产生作用,另外一些命令已经目录架构等都在官方文档中有说明

在插件内建立菜单的方法

上面的方法是在application中直接建立菜单,我们是插件开发,得自己搞,我们执行

php think crud -t <对应的数据表> -c <插件名>/<插件控制器>
# 例如我根据我的fa_pc_users表建立mypchelper插件下的Users控制器,就输入
/Applications/XAMPP/xamppfiles/bin/php think crud -t fa_pc_users -c mypchelper/Users
# 注意,有几个表就执行几次这个命令,数据表建立的时候无比要按照官方要求来做命名、字段选择和注释

执行过后,在正常配置了菜单后,我们就可以访问对应的表了,并且是直接套了bootstrap-table了哦

下一篇介绍Fastadmin内bootstrap-table表的多表查询以及bootstrap-table的formatter使用

参考资料

  1. FastAdmin使用——前端篇
  2. fastadmin 多表关联查询
  3. Fastadmin创始人回复多表查询
  4. FastAdmin多表联查