在前面构建项目的fastadmin入门 里面,我们已经能快速搭建该体系和根据数据表建立最简单的CURD项目。类似练手的图书管理系统,内部项目修改管理,也对系统进行了简单的部署。这梳理拿到真正项目的开发流程。
默认的开发目录和代码程序运行的是public,如果权限全部打开,并且不限制跨站的限制,可以直接yuming/public/的方式运行程序
伪静态代码路由的相关配置: 也就是省略掉index.php?s=会自动将后缀拼接到s后面去。
location ~* (runtime|application)/{
return 403;
}
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}
所以API端的默认路由是 我们新建个api路由 api/controller/action 可以直接访问到路由。这种路由结构非常的方便,如果不考虑安全性能,非常实用。
对外输出的用户数据表是user表,user表自带了权限认证登录基础功能。默认的userAPI功能 api/user/login .其中基础功能里面主要集成了:
用户登录|退出|注册|验证码登录|修改手机号|修改邮箱|会员中心初始化|会员信息修改|第三方登录|重置密码 常用的10个基础API接口
登录验证规则:邮箱验证|手机验验证|用户名验证,如果有额外的信息,全部使用extend数组传入,自动写入到user数据表。这样保证了数组传入数据的灵活性,又减去了大量重复造轮子的烦恼。
报错的相关提示,内置了多语言的报错,但是实际开发里面,fastadmin大部分面对的还是国内的用户,多语言报错相对比较鸡肋,直接在$this->setError设置进去,取报错的时候,通过 $this->getError,常见的不规范写法,是自己定义一个外部报错,直接在controller里面。
Fastadmin的API标准流程写法(通用的API标准写法):
读取前端参数 默认是post获取参数,非必填参数可写默认值
验证参数的非空和正则判断(邮箱和手机号的合法性检测)
将参数传入核心方法 执行逻辑
将报错封装在请求的方法里面
库方法的封装与使用 :
在框架里面,有通用库的概念app\common\library\文件里面,主要有auth 权限认证库,email 邮件库(包括发送邮件和判断)Ems(短信库,)log (日志库)
Menu 菜单库 security 安全过滤库
use app\common\library\Auth; 将复杂的功能封装到library 提供给全局使用,而不是单独的logic 一般限定在局部。
所以系统的开发结构是 controller 处理数据过滤和输出 library 处理逻辑
model处理数据库交互层 将之前的MLC结构做了个微调。
相关常用方法:
获取登录用户的信息 $this->auth->getUserInfo() 提取的是我们限制在auth里面的字段 如果是要获取user全部的表 直接$this->auth->getUser() 前者方法过滤掉了不该出现的字段。
可以看到 框架前端使用 Auth::XXX 这种静态写法居多,这是框架前端推崇的一种写法,直接通过引入文件,然后暴露静态访问的方法。如果没有static 方法,需要先使用new 一个对象的使用,这里解释下 静态方法 static 的优势,由于不与特定的对象绑定,直接初始化的时候加载到内存里面,访问更快,效率更高,频繁调用的时候,优势比较大,有个劣势就是 如果全部使用静态方法,会导致程序不方便调试。当系统逻辑比较简单时候,请求又比较多,静态方法优势比较明显。
后台如果要更改CURD方法,需要将对应的操作从需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改。默认的。
Tp5框架执行一个类前,会检测_initialize方法的存在,并先于其他方法的执行,后台的控制器模型会优先执行backend.php的_initialize方法,主要处理系统配置 语言后台加载,访问权限控制
默认的框架方法: 对接的相关接口 index 后台列表的核心方法
add 新增 edit 编辑 del 删除 import 导出一般我们二次开发会改动这几个方法。Add/edit 一般是后台变动某个字段 需要进行额外逻辑关联判断,会触发其他逻辑,需要我们进行重写开发。
后台页面的改动和路径:
后台生成的模板,如果我们要自己开发新的自动化生成模板,或者我们要新增生成新的页面标志或者自动逻辑的生成,或者更改系统的时间生成格式,或者其他标记,更改生成的模板路径: application/admin/command/Crud/stubs
如果要自定义一键生成的规则 application/admin/command/Crud.php 修改这个文件即可 ,命令行的生成是可以修改的。
生成的html和JS相关修改,首页列表的修改 public/assets,列表图片的显示样式修改,而编辑和添加在默认的admin后台目录可以直接进行编辑。
另外如果后端要获取admin_id 相关信息,也就是当前登录的用户数据 $this->auth->getUserInfo() 就可以直接获取到,可以额外新增一个管理员逻辑,比如二级管理员不能超过三个三级管理员,或者后台登陆者在登录的时候,自动填充当前的uid到服务器里面。