Fastadmin插件开发简易流程

  • Step1 使用命令行创建插件
  • Step2 更改插件信息
  • Step3 编辑插件相关数据库脚本
  • Step3 编辑插件的配置
  • Step4 为插件配置后台管理菜单
  • Step5 正式开发
  • Step6 打包插件

Step1 使用命令行创建插件

  1. cd /你的项目根目录路径
  2. php think addon -a 插件名称 -c create

建议使用官方工具首先检测插件名称是否已被占用
检测链接: 需要登录后方可使用

Step2 更改插件信息

创建完成后会生成5个文件 具体作用可参考官方文档(目录结构)

/addons/ProjectName
– controller
---- Index.php
– ProjectName.php
– config.php
– info.ini
– install.sql

info.ini 文件为插件名称,简介,作者信息,版本等,可进入编辑自己的插件信息,保存后进入Fastadmin后台插件管理页面刷新即可实时看到展示

Step3 编辑插件相关数据库脚本

插件我觉得最方便的地方之一即为数据库的创建, 编辑instal.sql. 把创建数据库的脚本复制到此处即可

注意: 实际测试过程中, 我发现在生成插件的时候, 会自动检测你的数据内与插件名称同名的数据表并进行写入.

所以实际的插件开发流程,完全根据个人, 插件数据库的命名规则为: 前缀_插件名_插件表, 实测中仅将同名表写入了sql脚本, 其它分表并没有进行写入. 所以还是建议设计完数据表后将数据库创建脚本一个个粘贴到此处

粘贴完成之后, 需要脚本中的表前缀更改为 __PREFIX__

Step3 编辑插件的配置

插件的目的其一就是为了方便模块的重用, 一个好用的插件, 除了功能之外, 我认为更重要的是其通用性, 实际上我认为想让一个功能尽量通用是很难的. 因为可能原本一行搞定的代码, 可能需要十行也不一定能做到尽善尽美.

即使这样, 在你能想到的地方还是尽量不要把一些关键或易变动的信息写死到代码中, 使用插件的配置是一个非常不错的选择. 能实现到怎样的灵活度就完全靠个人去不断的揣摩了.

config.php文件 即是你的插件配置, 这个配置是可以在后台插件管理页面中进行手动实时动态修改的.

如果不需要用到该功能的话, 完全可以 return [];

如果有需要配置的地方, 可以参考官方文档: 插件配置

根据规则编辑完配置文件后, 此时在管理后台就已经可以对配置进行修改了. 可根据需求调试合适的配置形式

? 如何使用配置

插件内置了多个函数, 可以根据自己的需求进行调用来使用, 这几个函数有获取插件列表的, 有生成插件url的. 有获取插件信息的, 有获取插件配置的, 总共没几个, 可自行查看内置函数介绍使用

Step4 为插件配置后台管理菜单

/addons/插件名/插件名.php 文件中, 已有4个插件的事件(安装/卸载/启用/禁用), 我们可以在安装时创建管理菜单. 卸载时删除菜单, 启用插件时, 启用插件菜单显示, 禁用时隐藏菜单

$menu = [  [  'name'    => 'adname',  # 菜单英文名称'title'   => '插件管理菜单标题', # 菜单展示标题'icon'    => 'fa fa-feed', # 图标 'sublist' => [ # 子菜单,可根据此格式向下扩展['name' => 'feedback/index', 'title' => '查看'], ['name' => 'feedback/detail', 'title' => '详情'],['name' => 'feedback/del', 'title' => '删除'],]]
];

上述代码为菜单的定义规则. 在调用下方添加菜单时使用;

添加菜单: Menu::create($menu);
删除菜单: Menu::delete('adname');
启用菜单: Menu::enable('adname');
禁用菜单: Menu::disable('adname');

Step5 正式开发

完成上述操作后, 此时一个插件的基本信息已经完善了. 然后就需要开始根据自己的需求进行开发了.

  1. 插件的后台管理功能开发:
    主要用到的是插件目录下的applicationpublic文件夹, 这两个文件内的所有文件在插件安装时都会被移动覆盖到项目根目录下, 所以后台的功能开发, 实际上和平常的模块开发无异, 可以正常开发完之后, 将文件按照目录结构剪切出来放在这个插件的目录下

  2. 插件的Api接口开发:
    同上, 也需要在application/api目录下进行api接口的开发, 之后在移动到插件对应目录即可

  3. 如果你的插件需要有前台页面, Fastadmin插件目录有提供专门的目录用来存放这些文件, 不需要再放在applicationpublic目录下了. 具体参考 目录结构

  4. 插件需要使用行为:
    传统的行为添加需要3个操作
    - 添加标签位(监听)
    - 定义行为(行为功能开发)
    - 行为绑定
    完成如上操作后, 即可在监听位置被触发时,查询该标签位绑定到的行为, 然后进行行为的执行

    但是在插件中,行为绑定步骤被做了简化, 你无需操心如何绑定, 这一步框架内部已经帮你实现了, 在插件启动时会自动注册这个行为. 也就是说, 你只需要定义, 并且监听即可

    监听行为
    在需要触发行为的代码中添加监听(\think\Hook:listen('xingwei_name'));

    定义行为
    在插件根目录下 /addons/插件名/插件名.php 文件中, 直接书写行为方法, 必须正确命名行为方法名称! (驼峰式); 例如: public function xingweiName(){}

Step6 打包插件

开发完成并测试无误后, 需要进行插件打包.
其实这里的插件打包, 就是按照插件的目录结构放置后压缩, 当然fastadmin提供了命令行打包.

打包这里, 其实有点繁琐, 因为使用CRUD加上了后台管理功能后, 文件比较分散. 需要一个个创建目录, 一个个剪切文件. 稍有不注意很可能就会漏掉文件.

打包命令: php think addon -a 插件名 -c package

打包完的插件在/runtime/addons目录下

注意: 插件打包前后,一定要认真仔细查看文件是否无误,仔细看有无遗漏,打包后的zip包,也一定要单独复制出来一份先留作备份,为什么? 看下面

  1. 插件在安装时, 应该是没有什么危险操作的.
  2. 插件在卸载时, 如果配置中勾选了干净安装的话, 插件会根据压缩包目录内的文件, 一个个去执行删除操作, 看清楚, 是删除!所以, 如果你没有备份, 很有可能你辛苦了几个小时的代码就这样没了.
  3. 同理, 在你开发的过程中, 也一定不要轻易去点击卸载!这个操作更危险, 因为此时你可能还没有打包以及备份, 这时的卸载操作将会对你造成毁灭性的打击

结: 上述即为基本流程. 仅适用想简单了解插件开发流程, 或者已有开发经验但是总忘记流程的人以及我自己参考使用,如果错误,欢迎评论指出

Fastadmin插件开发流程简要记录相关推荐

  1. 视频教程-FastAdmin插件开发入门-PHP

    FastAdmin插件开发入门 2009年4月创办 淄博日诺网络科技有限公司 法人总经理 2016年负责 中国传媒大学凤凰学院 网站开发 项目负责人 2017年 参与负责 用友软件理财项目开发 郭孟涛 ...

  2. FastAdmin插件开发辅助增强插件

    本人开发的FastAdmin插件开发辅助增强插件 不改变官方的开发习惯,但更丝滑,尽最大的努力生成你想要的代码 非常重要 非常重要 非常重要 写在最前面是为了不要漏了,导致插件没有正常工作. 编写代码 ...

  3. Spring 核心方法 refresh 刷新流程简要概述及相关源码扩展实现(二)

    前言 registerBeanPostProcessors initMessageSource 如何实际应用国际化处理 initApplicationEventMulticaster onRefres ...

  4. 第八届医学图像计算青年研讨会(MICS 2021)--简要记录

    会议介绍:https://14179526.fkwcd.cn/index.jsp?id=dgn66Z36&slv=2&sid=8786&v=oosnVwgMsXAO2oSMzD ...

  5. 记一次rk平台热点打开流程追踪记录

    记一次rk平台热点打开流程追踪记录 问题描述 rk平台偶现热点打开失败,错误日志如下: I/android.hardware.wifi@1.0-service: Starting legacy HAL ...

  6. WPS插件开发流程(2)

    上一篇文章WPS插件开发流程(1)中,我们详细讲了如何在Visual Studio中如何创建插件.在WPS中显示插件的方法.今天我们完成剩下的部分,讲解如何导出PIA.DLL强签名.打包安装文件夹的方 ...

  7. MediaPlayer源码流程简要分析

    涉及文件目录: \frameworks\base\media\java\android\media\MediaPlayer.java \frameworks\base\media\jni\androi ...

  8. Cadence Allegro 设计流程学习记录

    Cadence Allegro 设计流程学习记录 前提摘要 软件设计版本: 电路仿真软件:NI Multisim 14.0,TINA-TI. 原理图设计:Design Entry CIS 16.6. ...

  9. 仰邦LED(BX-Y08)二次开发的java版流程梳理记录

    仰邦LED-bx_y08二次开发的java版流程梳理记录 首次开发的项目是一个停车场主要显示剩余多少车辆 遇到很多难题;主要还要搞清楚二次开发LED的发送流程,在这记录下 //初始化API环境 仅一次 ...

最新文章

  1. nginx limit_rate突然限速失败
  2. Vue里标签嵌套限制问题解决------解析DOM模板时注意事项:
  3. vue拖拽控件生成界面代码_Blue HMI人机界面开发平台
  4. 都在说微服务,那么微服务的反模式和陷阱是什么(三)
  5. java的mythread_java多线程 - myShadow - OSCHINA - 中文开源技术交流社区
  6. Python小白的数学建模课-10.微分方程边值问题
  7. 你为什么要学习WordPress?
  8. 865程序设计c语言,2018年江西师范大学865程序设计(C语言)考研大纲
  9. Activiti工作流画图工具介绍
  10. cmake linux windows,Cmake 64位下载_Cmake Windows Linux下载 3.7.1 官网免费版_当载软件站...
  11. 2020年考研时间安排表
  12. 凸优化——对偶问题解题步骤
  13. HTML基础常识问答(三)
  14. NUC970裸机IIC驱动
  15. IDEA搭建POI导入导出Excel入门版
  16. SpringMVC配置中遇到的惊(keng)喜
  17. 用音响里的零件做迷你小机器人_用这些磁性“积木”,搭个迷你机器人|这个设计了不起...
  18. PHP汉字转拼音的两种方法+PHP提取汉字(中文)方法
  19. 树莓派之更改开机画面
  20. Httpservletrequest获取上传文件

热门文章

  1. Mapper 文件中SQL不等于的写法
  2. 通过建站学运维第六天
  3. Unity3D的FingerGesture插件
  4. 3、switch 语句-项目1-投票表决器
  5. linux小工具之-ccat
  6. 关于 typescript 里面的 分布式条件类型
  7. 怎么设置oracle变量环境变量,window中oracle环境变量设置方法分享
  8. 学计算机日语受限制吗,高考日语受限的专业有哪些?可以报考哪些大学?
  9. vue采用 XLSX文件上传与下载
  10. 挑战阿里社招:20道Java工程师面试必问题,真香