PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > Fastadmin

FastAdmin插件开发教程之简明开发教程

管理员 2024-12-14
Fastadmin
21
FastAdmin已上线全新插件开发教程,请点击查看:https://doc.fastadmin.net/developer/55.html

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

新建插件

我们可以在命令行使用命令php think addon -a 插件名称 -c create创建一个插件的默认结构,FastAdmin会在addons目录生成插件的基本信息和文件

插件配置

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

插件启动配置

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

<?phpreturn [    // 是否自动读取取插件钩子配置信息(默认是关闭)    'autoload' => false,    // 当关闭自动获取配置时需要手动配置hooks信息    'hooks' => [        // 可以定义多个钩子        'testhook'=>'test' // 键为钩子名称,用于在业务中自定义钩子处理,值为实现该钩子的插件,                    // 多个插件可以用数组也可以用逗号分割    ]];

插件基础配置

基础配置对应的是插件文件info.ini,此文件控制着插件的基础信息及开关状态,目前支持以下几个配置信息

name = 插件英文唯一标题title = 插件标题intro = 插件介绍author = 插件作者website = https://www.fastadmin.netversion = 1.0.0state = 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类文件。注意:类文件首字母需大写
<?phpnamespace 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');    }}

创建钩子模板文件

在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类的用法与tp5中的controller一致
<?phpnamespace addonstestcontroller;class Action{    public function link()    {        echo 'hello link';    }}
如果需要使用view模板则需要继承\think\addons\Controller
模板文件所在位置为插件目录的view中,规则与模块中的view规则一致
<?phpnamespace addonstestcontroller;use thinkaddonsController;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

希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部