前言

FastAdmin 的插件功能基于 think-addons 进行二次开发,下面的插件开发文档中的部分内容也是直接引用自 think-addons。在开发 FastAdmin 的插件之前,建议你先了解下 FastAdmin 插件的目录结构说明。

新建插件

我们可以在命令行使用以下命令创建一个插件的默认结构,FastAdmin 会在 addons 目录生成插件的基本信息和文件:

php think addon -a 插件名称 -c create

插件配置

FastAdmin 的插件配置分为插件启动配置、基础配置和扩展配置三个部分。

插件启动配置

插件启动配置文件位于 application/extra/addons.php,FastAdmin 在后台安装或卸载插件时会自动更新此文件。你也可以手动配置插件的启动配置,配置如下:

<?php
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 类文件。注意:类文件首字母需大写。

<?php
namespace addons\test;

use app\common\library\Menu;
use think\Addons;

/**
 * 插件测试
 */
class Test extends Addons
{
    /**
     * 插件安装方法
     * @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');
    }
}

创建钩子模板文件

test 目录中创建 info.html 模板文件,钩子在使用 fetch 方法时对应的模板文件。

<h1>hello tpl</h1>

如果插件中需要有链接或提交数据的业务,可以在插件中创建 controller 业务文件。要访问插件中的 controller 时使用 addon_url 生成 URL 链接。

如下:

<a href="{:addon_url('test/link')}">link test</a>

格式为:
test 为 controller 中的类名,link 为 controller 中的方法。

创建插件的 controller 文件

test 目录中创建 controller 目录,在 controller 目录中创建 Action.php 文件。controller 类的用法与 ThinkPHP5 中的 controller 一致。

<?php
namespace addons\test\controller;

class Action
{
    public function link()
    {
        echo 'hello link';
    }
}

如果需要使用 view 模板则需要继承 \think\addons\Controller 类。模板文件所在位置为插件目录的 view 中,规则与模块中的 view 规则一致。

<?php
namespace addons\test\controller;

use think\addons\Controller;

class Action extends Controller
{
    public function link()
    {
        return $this->fetch();
    }
}

使用钩子

创建好插件后就可以在正常业务中使用该插件中的钩子了。使用钩子的时候第二个参数可以省略。

模板中使用钩子

<div>{:hook('testhook', ['id' => 1])}</div>

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

通过上述步骤,我们可以完成 FastAdmin 插件的开发。希望本教程能对你的开发工作有所帮助。

点赞(0)

微信扫一扫加关注

返回
顶部