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

fastadmin是一个国产的基于thinkPHP5和Bootstrap的开箱即用的后台管理系统,适合于快速开发后台,它集成了Bootstrap的响应式设计方式以及优秀的会员权限系统,并且拥有thinkPHP的社区来支持其开发,非常好用,然而好用还是会有坑,特地记一下。
为啥用Fastadmin
最开始自己做的后台是套的图书馆里那本传智播客的《php和mysql程序设计》里面的CMS后台系统,当时觉得已经很厉害了,但始终有一个没法解决的问题就是权限系统,而我这种人又不会这个,也没人教过,就想有没有轮子可以直接用。

在网上找到几个入眼的
其中前两个是基于前端技术栈,Vue+node,后两个是基于php
我思考了两天,感觉前两个还是没干过,太复杂,上手时间太长,况且最后还要用pm2来挂,老服务器上我可是要手动配置Apache
的vhost
,太麻烦了,所以选择了php
然后选择了比较适合开发的Fastadmin
,他的优点有:
- 自带权限管理
- 可以用
php think CURD命令
自动生成MVC的代码 thinkphp
生态不错- 自带
bootstrap-table
- 自己还有商城,可以在线下载一些插件来用
所以用了这个
但是还是强烈推荐一下Phalapi框架
,这个框架用来写api真的是绝佳,入门真的超级简单,并且会自动生成api文档,非常棒。
上手Fastadmin
MVC架构
Fastadmin
基于Thinkphp5
,所以也是采用了经典的MVC(Model-View-Controller)架构
,各层各司其职,互不干扰,
Controller控制器
:负责派发任务和处理任务,给视图层View提供数据渲染,给Model层派发读取数据库指令
Model模型层
:负责数据库的读写,基础处理
View视图层
:负责用户看到的部分,一般都是html文件,通过controller来给数据渲染来实现我们浏览器看到的画面。
了解了这个,然后可以来看看官方快速上手指南了
快速安装
强烈建议直接下载完全包,不要用命令行安装,因为各种包管理软件会出现各种问题,直接下完整包解压就行,方便,然后挂载在web服务器上,定位到public文件夹里正常安装即可

快速上手要先看学习手册
要入手这个框架,首先至少读完第一个,因为官方的文档不是讲的很细致,所以还得去看thinkphp5
Thinkphp5快速入门 这个可以现在趁着肺炎免费领取,之后会变成20块钱,不过我这已经下载了他的mobi版,看看怎么传上来
生成插件
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表格来进行管理

下面为摘录
使用命令行创建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,


可以看到没有了左侧菜单栏,所以这个参数是用来生成菜单栏的,具体的实现过程都是封装在框架里的,可以不用关心。
另外,在官方文档中也有说明,如果改变了框架中的核心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使用