赞
踩
前言
FastAdmin的插件功能基于think-addons进行二次开发,在此向5ini99表示感谢!下面的插件开发文档中的部分内容也是直接引用自think-addons。
在开发FastAdmin的插件之前建议你先了解下FastAdmin插件的目录结构说明
新建插件
我们可以在命令行使用命令php think addon -a 插件名称 -c create创建一个插件的默认结构,FastAdmin会在addons目录生成插件的基本信息和文件
插件配置
FastAdmin的插件配置分为插件启动配置、基础配置和扩展配置三个部分
插件启动配置
插件启动配置文件位于application/extra/addons.php,FastAdmin在后台安装或卸载插件时会自动更新此文件,你也可以手动配置插件的启动配置,配置如下
return [
// 是否自动读取取插件钩子配置信息(默认是关闭)
'autoload' => false,
// 当关闭自动获取配置时需要手动配置hooks信息
'hooks' => [
// 可以定义多个钩子
'testhook'=>'test' // 键为钩子名称,用于在业务中自定义钩子处理,值为实现该钩子的插件,
// 多个插件可以用数组也可以用逗号分割
]
];
插件基础配置
基础配置对应的是插件文件info.ini,此文件控制着插件的基础信息及开关状态,目前支持以下几个配置信息
name = 插件英文唯一标题
title = 插件标题
intro = 插件介绍
author = 插件作者
website = https://www.fastadmin.net
version = 1.0.0
state = 1
插件扩展配置
扩展配置对应的是插件文件夹中的config.php,此文件需要返回一个二维数据,此文件后安装以后用户将可以在插件管理中手动修改其中的配置。
return [
[
//配置名称,该值在当前数组配置中确保唯一
'name' => 'yourname',
//配置标题
'title' => '配置标题',
//配置类型,支持string/text/number/datetime/array/select/selects/image/images/file/files/checkbox/radio/bool
'type' => 'string',
//配置select/selects/checkbox/radio/bool时显示的列表项
'content' => [
'1' => '显示',
'0' => '不显示'
],
//配置值
'value' => '1',
//配置验证规则,更之规则可参考nice-validator文件
'rule' => 'required',
'msg' => '验证失败提示文字',
'tip' => '字段填写帮助',
'ok' => '验证成功提示文字'
],
[
'name' => 'yourname2',
'title' => '配置标题2',
'type' => 'radio',
'content' => [
'1' => '显示',
'0' => '不显示'
],
'value' => '1',
'rule' => 'required',
'msg' => '验证失败提示文字',
'tip' => '字段填写帮助',
'ok' => '验证成功提示文字'
]
];
创建插件
创建的插件可以在view视图中使用,也可以在php业务中使用
安装完成后访问系统时会在项目根目录生成名为addons的目录,在该目录中创建需要的插件。
下面写一个例子:
创建test插件
php think addon -a test -c create
创建钩子实现类
在test目录中创建Test.php类文件。注意:类文件首字母需大写
namespace addonstest; // 注意命名空间规范
use appcommonlibraryMenu;
use thinkAddons;
/**
* 插件测试
*/
class Test extends Addons // 需继承thinkaddonsAddons类
{
/**
* 插件安装方法
* @return bool
*/
public function install()
{
$menu = [
[
'name' => 'test',
'title' => '插件示例',
'ismenu' => 1,
'icon' => 'fa fa-list',
'remark' => '插件开发示例描述',
]
];
Menu::create($menu);
}
/**
* 插件卸载方法
* @return bool
*/
public function uninstall()
{
Menu::delete('test');
return true;
}
/**
* 插件启用方法
*/
public function enable()
{
Menu::enable('test');
}
/**
* 插件禁用方法
*/
public function disable()
{
Menu::disable('test');
}
/**
* 实现的testhook钩子方法
* @return mixed
*/
public function testhook($param)
{
// 调用钩子时候的参数信息
print_r($param);
// 当前插件的配置信息,配置信息存在当前目录的config.php文件中,见下方
print_r($this->getConfig());
// 可以返回模板,模板文件默认读取的为插件目录中的文件。模板名不能为空!
return $this->fetch('info');
}
}
创建钩子模板文件
在test目录中创建info.html模板文件,钩子在使用fetch方法时对应的模板文件。
如果插件中需要有链接或提交数据的业务,可以在插件中创建controller业务文件,
要访问插件中的controller时使用addon_url生成url链接。
如下:
格式为:
test为controller中的类名,link为controller中的方法
创建插件的controller文件
在test目录中创建controller目录,在controller目录中创建Action.php文件
controller类的用法与tp5中的controller一致
namespace addonstestcontroller;
class Action
{
public function link()
{
echo 'hello link';
}
}
如果需要使用view模板则需要继承thinkaddonsController类
模板文件所在位置为插件目录的view中,规则与模块中的view规则一致
namespace addonstestcontroller;
use thinkaddonsController;
class Action extends Controller
{
public function link()
{
return $this->fetch();
}
}
使用钩子
创建好插件后就可以在正常业务中使用该插件中的钩子了
使用钩子的时候第二个参数可以省略
模板中使用钩子
php业务中使用
只要是thinkphp5正常流程中的任意位置均可以使用
hook('testhook', ['id'=>1])
插件目录结构
最终生成的目录结构为
项目目录
- addons
-- test
--- controller
---- Action.php
--- view
---- action
----- link.html
--- config.php
--- info.ini
--- info.html
--- Test.php
- application
- thinkphp
- extend
- vendor
- public
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。