热搜词
发表于 2022-5-21 08:07:23 | 显示全部楼层 |阅读模式
目录结构
FastAdmin中每一个应用插件都是一个独立的插件目录,所有的应用插件都是存放在项目目录中的addons目录下。

以下是一个博客插件的目录结构:

blog
├── application    //此文件夹中所有文件会覆盖到根目录的/application文件夹
├── assets        //此文件夹中所有文件会复制到/public/assets/addons/blog文件夹
├── controller    //此文件夹为插件控制器目录
├── lang            //此文件夹为插件语言包目录
├── model            //此文件夹为插件模型目录
├── public        //此文件夹中所有文件会覆盖到根目录的/public文件夹
├── view            //此文件夹为插件视图目录
├── Blog.php        //此文件为插件核心安装卸载控制器,必需存在
├── bootstrap.js    //此文件为插件JS启动文件
├── LICENSE        //版权文件
├── config.php    //插件配置文件,我们在后台插件管理中点配置按钮时配置的文件,必需存在
├── config.html    //插件配置模板文件,我们在后台插件管理中点配置按钮时会调用此模板文件,可选
├── info.ini        //插件信息文件,用于保存插件基本信息,插件开启状态等,必需存在
└── install.sql    //插件数据库安装文件,此文件仅在插件安装时会进行导入


其中的application和public文件夹会覆盖到根目录,这两个文件夹主要用于我们后台管理功能的开发,我们可以先在后台开发好对应的管理功能后,再将对应的功能打包进插件即可,FastAdmin在插件安装和卸载时会自动进行文件冲突检测,如果遇到冲突的文件会提醒用户是否进行覆盖或删除。

assets这个文件夹很关键,FastAdmin会将assets中的所有文件夹和文件复制到/public/assets/addons/blog/文件夹中去,这个blog即是我们的插件目录名称,assets文件夹中的所有文件不会进行文件冲突检测,/public/assets/addons/blog/这个目录下的文件,我们在视图文件中可以直接通过__ADDON__指向这个路径。因此在开发视图时我们可以先使用相对路径设计,完成后我们再统一加上这个__ADDON__的前缀

controller、lang、model和view这四个文件夹是我们插件前台功能的MVC部分,这部分文件夹不会复制或移动到其它位置。

Blog.php这个文件是插件的核心文件,我们可以在这个文件中编写插件安装或卸载时执行的脚本,或者在此插件中编写菜单的生成或删除,同时插件的行为方法也是编写在此文件中的,插件所支持的行为事件会在后面讲到。此文件命令规则为插件目录名称首字母大写。

bootstrap.js这个文件是插件的启动文件,插件在安装完启用后,FastAdmin会将此文件中的内容合并到/public/assets/js/addons.js中去,你可以在此编写插件核心JS或注册事件,在此JS中可以使用require依赖其它模块。同时在此插件中可以使用Fast、Backend、Lang等全局对象,因为在此之前此类对象已经加载且注册。

config.html这个文件是插件配置的模板文件,我们在后台插件管理中点配置按钮时会调用该模板文件进行渲染,如果不存在该模板文件,将调用框架自带的配置模板进行渲染。

config.php这个文件是插件的配置文件,我们在后台插件管理中点配置按钮时会保存在此文件,此文件的内容格式为:

  1. <?php



  2. return [

  3.     [

  4.         //配置名称,该值在当前数组配置中确保唯一

  5.         'name'    => 'yourname',

  6.         //配置标题

  7.         'title'   => '配置标题',

  8.         //配置类型,支持string/text/number/datetime/array/select/selects/image/images/file/files/checkbox/radio/bool

  9.         'group'    => '分组一', //配置分组,只支持FastAdmin1.3.3+

  10.         'visible'    => '配置名=验证值', //可视条件,只有满足条件该配置才会显示,只支持FastAdmin1.3.3+

  11.         'type'    => 'string',

  12.         //配置select/selects/checkbox/radio/bool时显示的列表项

  13.         'content' => [

  14.             '1' => '显示',

  15.             '0' => '不显示'

  16.         ],

  17.         //配置值

  18.         'value'   => '1',

  19.         //配置验证规则,更之规则可参考nice-validator文件

  20.         'rule'    => 'required',

  21.         'msg'     => '验证失败提示文字',

  22.         'tip'     => '字段填写帮助',

  23.         'ok'      => '验证成功提示文字'

  24.     ],

  25.     [

  26.         'name'    => 'yourname2',

  27.         'title'   => '配置标题2',

  28.         'group'    => '分组二', //配置分组,只支持FastAdmin1.3.3+

  29.         'type'    => 'radio',

  30.         'options' => [

  31.             '1' => '显示',

  32.             '0' => '不显示'

  33.         ],

  34.         'value'   => '1',

  35.         'rule'    => 'required',

  36.         'msg'     => '验证失败提示文字',

  37.         'tip'     => '字段填写帮助',

  38.         'ok'      => '验证成功提示文字'

  39.     ],

  40.     [

  41.         'name'    => '__tips__',

  42.         'title'   => '温馨提示',

  43.         'type'    => 'string',

  44.         'content' =>

  45.             array(),

  46.         'value'   => '该提示将出现的插件配置头部,通常用于提示和说明',

  47.         'rule'    => '',

  48.         'msg'     => '',

  49.         'tip'     => '',

  50.         'ok'      => '',

  51.         'extend'  => '',

  52.     ],

  53. ];
复制代码

config.php中的值在FastAdmin任何地方均可使用get_addon_config('blog')来获取配置值

info.ini这个文件仅用于保存插件基础信息和开启状态,此文件的内容格式为

  1. name = blog
  2. title = 博客插件
  3. intro = 响应式博客插件,包含日志、评论、分类、归档等
  4. author = FastAdmin
  5. website = https://www.fastadmin.net
  6. version = 1.0.0
  7. state = 1
复制代码

注意这个name是插件的唯一标识,不能和现在的插件冲突,其次注意下这个name值,如果我们有涉及到数据库,那个表的前缀也必须是__PREFIX__标识名开头。比如我们下面的__PREFIX__blog_category。

install.sql 这个文件中只能是SQL语句,同时在此文件中可以使用__PREFIX__表示数据库表前缀,FastAdmin在安装导入SQL时自动进行替换。此文件的内容格式为

  1. #我们在创建数据库时建议加上IF NOT EXISTS
  2. CREATE TABLE IF NOT EXISTS `__PREFIX__blog_category` (
  3.   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  4.   `pid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '父分类ID',
  5.   `name` varchar(30) NOT NULL DEFAULT '' COMMENT '分类名称',
  6.   `nickname` varchar(50) NOT NULL DEFAULT '' COMMENT '分类昵称',
  7.   `flag` set('hot','index','recommend') NOT NULL DEFAULT '' COMMENT '分类标志',
  8.   `image` varchar(100) NOT NULL DEFAULT '' COMMENT '图片',
  9.   `keywords` varchar(255) NOT NULL DEFAULT '' COMMENT '关键字',
  10.   `description` varchar(255) NOT NULL DEFAULT '' COMMENT '描述',
  11.   `diyname` varchar(30) NOT NULL DEFAULT '' COMMENT '自定义名称',
  12.   `createtime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
  13.   `updatetime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间',
  14.   `weigh` int(10) NOT NULL DEFAULT '0' COMMENT '权重',
  15.   `status` varchar(30) NOT NULL DEFAULT '' COMMENT '状态',
  16.   PRIMARY KEY (`id`),
  17.   KEY `weigh` (`weigh`,`id`),
  18.   KEY `pid` (`pid`)
  19. ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='博客分类表';

  20. INSERT INTO `__PREFIX__blog_category` VALUES ('1', '0', '默认分类', 'default', '', '/assets/img/qrcode.png', '', '', '', '1502112587', '1502112587', '0', 'normal');
复制代码


全部评论1
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2025-1-16 00:15 , Processed in 0.156860 second(s), 25 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2025 Discuz! Team