独立开发者系列(40)——fastadmin插件的开发

插件开发的优势会增加系统本身的复杂度,但是优势很明显,可以直接热插拔,可以云安装,非常方便。

1.创建一个属于自己的插件
php think addon -a mydemo -c create
这样基本就有自己的目录,可以开始进行代码的改动。如果是写好的插件
插件的目录结构:(安装插件只是将) 目录结构理解非常重要,如果自己要开发插件,需要清楚各个目录结构

mydemo //插件标识
├── application    //此文件夹中所有文件会覆盖到根目录的/application文件夹
│   └── admin
│       ├── controller
│       │   └── mydemo //插件标识
│       │       ├── Test1.php //控制器1
│       │       └── Test2.php //控制器2
│   │   ├── lang
│   │   │   └── zh-cn
│   │   │       └── mydemo
│   │   │           ├── test1.php //语言包1
│   │   │           ├── test2.php //语言包2
│       ├── model
│       │   └── mydemo
│       │       ├── Test1.php //模型1
│       │       └── Test2.php //模型2
│       └── view
│           └── mydemo
│               ├── test1  //视图目录1
│               └── test2  //视图目录2
├── assets        //此文件夹中所有文件会复制到/public/assets/addons/mydemo文件夹
├── controller    //此文件夹为插件控制器目录
├── lang            //此文件夹为插件语言包目录
├── model            //此文件夹为插件模型目录
├── library            //此文件夹为插件类目录(如有)
├── public        //此文件夹中所有文件会覆盖到根目录的/public文件夹
│   └── assets
│       └── js
│           └── backend
│               └── mydemo //插件标识
│                   ├── test1.js //脚本1
│                   └── test2.js //脚本2
├── view            //此文件夹为插件视图目录
├── wxapp            //此文件夹为微信原生应用源码目录(如有)
├── uniapp            //此文件夹为Uniapp源码目录(如有)
├── licenses            //此文件夹为版权文件目录(如有)
├── Mydemo.php        //此文件为插件核心安装卸载控制器,必需存在,注意首字母大写
├── bootstrap.js    //此文件为插件JS启动文件,可选
├── LICENSE        //插件版权文件
├── config.html    //自定义插件配置视图模板,可选
├── config.php    //插件配置文件,我们在后台插件管理中点配置按钮时配置的文件,不存在时将不显示`配置`按钮
├── info.ini        //插件信息文件,用于保存插件基本信息,插件开启状态等,必需存在
├── install.sql        //插件数据库安装文件,此文件仅在插件安装时会进行导入,可选
└── testdata.sql    //插件测试数据SQL文件,此文件在安装插件时会提示是否导入测试数据,可选

2.自己开发的包的安装
当你自己写完了一个安装包,需要在其他系统上测试下是否支持安装。
php think addon -a test -c package 会将你开发好的插件打包

一般默认情况下,安装后,会自动删除对应的安装包。在特殊情况下,你需要保留安装包(比如作为研究安装包的构成)或者断网情况下需要重装(有些网络服务器可能在国外,导致网速非常卡)也有可能不想反复登录账号下载想直接安装本地的。

vendor/karsonzhang/fastadmin-addons/src/addons/Service.php 修改该文件 450行,保留档次下载的插件。
本地安装的时候,需要移除登录造成的困扰
Service::valid($params); //身份校验关闭,否则自己写的插件无法本地安装,特别是自己内部私有化开发的,要不然一直报错官方。
application/admin/controller/Addon.php 需要关闭登录验证(自己本地开发的插件,需要发送给自己客户,官方是无法验证的)

前端需要移除本地安装的警告 addon.js 231行var uid = userinfo ? userinfo.id : 1; (未登录状态下 可以安装自己的插件)

  1. 离线安装包的优势与拓展
    可以把你的fastadmin理解成一个大平台,你开发的每个功能(无论商城/点餐系统),你本地测试打包没有问题之后,迁移到某个系统里面,全新的版本里面安装。这样可以节约巨大的开发优势,很多小单子,是不需要自己反复搭建系统的。他们只是需要特定的功能,现在这样只需要给用户很小的系统一个子功能权限即可。

  2. 开发的主要核心流程:
    设计好插件功能的数据表(基本每个项目 都必备的功能 可以使用辅助的设计开发)
    生成CURD后台功能(可以使用命令行一次性生成简单的)php think crud -t test -u 1 建议安装使用系统免费的命令行在线生成功能(要不然关联表映射配置的很累)命令行可以一次生成CURD和菜单,但是后台分俩次更清晰
    开发好前端的调用逻辑,addon接口路由是可以直接访问到的 外层加addon即可
    复制一份admin内部的代码到application。(如果开发了其他静态资源,也按照1目录里面的资源放进去)
    用zip打包该插件,可以在runtime/addon 里面看到你打包的插件
    将该包发给你其他需要安装的系统(完成安装即可)

    addons的接口访问路径 addons/mydemo/index/test (api/index/test)

5.获取插件的配置
$config = get_addon_config(‘xxxx’); //获取插件的配置方法
对应插件的config.php 该配置直接在后台点击的时候会弹出来,需要用户进行对应配置
一般是用来配置类似短信的密钥 地图的key 或者远程服务器通讯的密钥,可以和远程服务器进行通讯
对应的后台配置页面 addons/xxxx/view/index/index.html 该页面是后台配置项目时候的弹出页面
配置的参数直接写入config.php 文件里面,所以安装插件必须具备读写权限

6.常用的免费插件:
在线命令——不用再使用命令行操作相关逻辑,直接操作命令,不用再去查找复杂的命令
数据库管理——免去简单系统的维护,专门登录服务器的操作
开发示例——一些复杂的后台页面构建,示例能减轻我们自己开发的工作量
登录背景图——不同的客户换不同的背景用来区分,要不然客户太多
定时任务——基本项目都有定时执行任务
设置方法:用Linux的crontab

          • /usr/bin/php /www/yoursite/public/index.php /addons/crontab/autotask/index > /dev/null 2>&1 &

图片裁剪——所有上传图片都需要的功能(否则面临大小对不上或者不符合的问题)

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大梁来了

千山万水总是情,打赏一块行不行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值