cd /你的项目根目录路径
php think addon -a 插件名称 -c create
建议使用官方工具首先检测插件名称是否已被占用
检测链接: 需要登录后方可使用
创建完成后会生成5个文件 具体作用可参考官方文档(目录结构)
/addons/ProjectName
– controller
---- Index.php
– ProjectName.php
– config.php
– info.ini
– install.sql
info.ini 文件为插件名称,简介,作者信息,版本等,可进入编辑自己的插件信息,保存后进入Fastadmin后台插件管理页面刷新即可实时看到展示
插件我觉得最方便的地方之一即为数据库的创建, 编辑instal.sql. 把创建数据库的脚本复制到此处即可
注意: 实际测试过程中, 我发现在生成插件的时候, 会自动检测你的数据内与插件名称同名的数据表并进行写入.
所以实际的插件开发流程,完全根据个人, 插件数据库的命名规则为: 前缀_插件名_插件表, 实测中仅将同名表写入了sql脚本, 其它分表并没有进行写入. 所以还是建议设计完数据表后将数据库创建脚本一个个粘贴到此处
粘贴完成之后, 需要脚本中的表前缀更改为 __PREFIX__
插件的目的其一就是为了方便模块的重用, 一个好用的插件, 除了功能之外, 我认为更重要的是其通用性, 实际上我认为想让一个功能尽量通用是很难的. 因为可能原本一行搞定的代码, 可能需要十行也不一定能做到尽善尽美.
即使这样, 在你能想到的地方还是尽量不要把一些关键或易变动的信息写死到代码中, 使用插件的配置是一个非常不错的选择. 能实现到怎样的灵活度就完全靠个人去不断的揣摩了.
config.php文件 即是你的插件配置, 这个配置是可以在后台插件管理页面中进行手动实时动态修改的.
如果不需要用到该功能的话, 完全可以 return [];
如果有需要配置的地方, 可以参考官方文档: 插件配置
根据规则编辑完配置文件后, 此时在管理后台就已经可以对配置进行修改了. 可根据需求调试合适的配置形式
? 如何使用配置
插件内置了多个函数, 可以根据自己的需求进行调用来使用, 这几个函数有获取插件列表的, 有生成插件url的. 有获取插件信息的, 有获取插件配置的, 总共没几个, 可自行查看内置函数介绍使用
/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');
完成上述操作后, 此时一个插件的基本信息已经完善了. 然后就需要开始根据自己的需求进行开发了.
插件的后台管理功能开发:
主要用到的是插件目录下的application
和public
文件夹, 这两个文件内的所有文件在插件安装时都会被移动覆盖到项目根目录下, 所以后台的功能开发, 实际上和平常的模块开发无异, 可以正常开发完之后, 将文件按照目录结构剪切出来放在这个插件的目录下
插件的Api接口开发:
同上, 也需要在application/api
目录下进行api接口的开发, 之后在移动到插件对应目录即可
如果你的插件需要有前台页面, Fastadmin插件目录有提供专门的目录用来存放这些文件, 不需要再放在application
和public
目录下了. 具体参考 目录结构
插件需要使用行为:
传统的行为添加需要3个操作
- 添加标签位(监听)
- 定义行为(行为功能开发)
- 行为绑定
完成如上操作后, 即可在监听位置被触发时,查询该标签位绑定到的行为, 然后进行行为的执行
但是在插件中,行为绑定步骤被做了简化, 你无需操心如何绑定, 这一步框架内部已经帮你实现了, 在插件启动时会自动注册这个行为. 也就是说, 你只需要定义, 并且监听即可
监听行为
在需要触发行为的代码中添加监听(\think\Hook:listen('xingwei_name')
);
定义行为
在插件根目录下 /addons/插件名/插件名.php
文件中, 直接书写行为方法, 必须正确命名行为方法名称! (驼峰式); 例如: public function xingweiName(){}
开发完成并测试无误后, 需要进行插件打包.
其实这里的插件打包, 就是按照插件的目录结构放置后压缩, 当然fastadmin提供了命令行打包.
打包这里, 其实有点繁琐, 因为使用CRUD加上了后台管理功能后, 文件比较分散. 需要一个个创建目录, 一个个剪切文件. 稍有不注意很可能就会漏掉文件.
打包命令: php think addon -a 插件名 -c package
打包完的插件在/runtime/addons
目录下
注意: 插件打包前后,一定要认真仔细查看文件是否无误,仔细看有无遗漏,打包后的zip包,也一定要单独复制出来一份先留作备份,为什么? 看下面
结: 上述即为基本流程. 仅适用想简单了解插件开发流程, 或者已有开发经验但是总忘记流程的人以及我自己参考使用,如果错误,欢迎评论指出