结构目录
插件目录结构
/plugins/test/
├─admin 插件后台控制器目录(非必须)
│ ├─Index.php 初始化的默认控制器
├─agent 插件代理控制器目录(非必须)
│ ├─Index.php 初始化的默认控制器
├─wx 插件微信控制器目录(非必须)
│ ├─Index.php 初始化的默认控制器
├─model 插件模型目录(非必须)
├─sql 模块SQL文件目录(非必须)
│ ├─install.sql 安装SQL文件
│ ├─uninstall.sql 卸载SQL文件
├─validate 验证器目录(非必须)
├─view 插件模板目录(非必须)
│ ├─admin 插件后台模板目录
│ │ ├─index 控制器模板目录(以控制器命名)
│ │ │ ├─index.html 模板文件(示例)
│ ├─agent 插件前台模板目录
│ │ ├─index 控制器模板目录(以控制器命名)
│ │ │ ├─index.html 模板文件(示例)
│ ├─wx 插件前台模板目录
│ │ ├─index 控制器模板目录(以控制器命名)
│ │ │ ├─index.html 模板文件(示例)
│ ├─widget 插件钩子模板目录
│ │ │ ├─system_hook.html 钩子模板(示例)
├─info.php 插件基本信息
├─menu.php 插件后台管理菜单节点
├─test.php 插件与钩子的实现方法
插件配置
插件配置位于 info.php
,例如:
<?php
// +----------------------------------------------------------------------
// | HisiPHP框架[基于ThinkPHP5.1开发]
// +----------------------------------------------------------------------
// | Copyright (c) 2016-2021 http://www.HisiPHP.com
// +----------------------------------------------------------------------
// | HisiPHP承诺基础框架永久免费开源,您可用于学习和商用,但必须保留软件版权信息。
// +----------------------------------------------------------------------
// | Author: 橘子俊 <364666827@qq.com>,开发者QQ群:50304283
// +----------------------------------------------------------------------
/**
* 插件基本信息
*/
return [
// 核心框架[必填]
'framework' => 'thinkphp5.1',
// 插件名[必填]
'name' => 'aaa',
// 插件标题[必填]
'title' => 'aaaa',
// 模块唯一标识[必填],格式:插件名.[应用市场ID].plugins.[应用市场分支ID]
'identifier' => '123',
// 插件图标[必填]
'icon' => '/static/plugins/aaa/aaa.png',
// 插件描述[选填]
'intro' => '1111',
// 插件作者[必填]
'author' => 'kangsgo',
// 作者主页[选填]
'author_url' => 'http://www.baidu.com',
// 版本[必填],格式采用三段式:主版本号.次版本号.修订版本号
// 主版本号【位数变化:1-99】:当模块出现大更新或者很大的改动,比如整体架构发生变化。此版本号会变化。
// 次版本号【位数变化:0-999】:当模块功能有新增或删除,此版本号会变化,如果仅仅是补充原有功能时,此版本号不变化。
// 修订版本号【位数变化:0-999】:一般是 Bug 修复或是一些小的变动,功能上没有大的变化,修复一个严重的bug即发布一个修订版。
'version' => '1.0.0',
// 原始数据库表前缀,插件带sql文件时必须配置
'db_prefix' => 'iot_',
//格式['sort' => '100','title' => '配置标题','name' => '配置名称','type' => '配置类型','options' => '配置选项','value' => '配置默认值', 'tips' => '配置提示']
'config' => [
0 =>
[
'sort' => '100',
'title' => '111',
'name' => 'ddd',
'type' => 'input',
'options' => '',
'value' => '',
'tips' => '',
],
],
];
大部分内容都进行了注释,简单介绍一下插件配置
格式 [‘sort’ => ‘100’,’title’ => ‘配置标题’,’name’ => ‘配置名称’,’type’ => ‘配置类型’,’options’ => ‘配置选项’,’value’ => ‘配置默认值’, ‘tips’ => ‘配置提示’]
参数 | 含义 | 类型 | 必填 | 说明 |
---|---|---|---|---|
sort | 排序 | int | Y | |
title | 标题 | string | Y | 2-12个字符 |
name | 字段名称 | string | Y | 字母,数字,下划线 |
type | 表单类型 | string | Y | 目前支持 input,radio,hidden,select |
options | 表单选项 | string | N | |
value | 默认值 | string/int | N | |
tips | 提示 | string | N |
调用插件
格式:{:config('plugins_插件名.配置名')}
插件控制器
插件控制器也可分为后台控制器(admin),代理控制器(agent)和微信控制器(wx),如果你的插件不需要用到钩子功能而又需要分前后台,还是建议你用模块的方式来开发。
1.后台控制器
需要继承 app\common\controller\Adminbase
若有模板,则需要定义 define('ENTRANCE','admin')
示例如下:
<?php
namespace plugins\aaa\admin;
use app\common\controller\Adminbase;
class Index extends Adminbase
{
protected function initialize()
{
parent::initialize();
define('ENTRANCE', 'admin');
}
public function index()
{
return $this->fetch();
}
}
访问地址:
admin/plugins/run?_p=test&_c=index&_a=show
2.代理控制器
需要继承 app\common\controller\Agentbase
若有模板,则需要定义 define('ENTRANCE','agent')
访问地址:
agent/plugins/run?_p=test&_c=index&_a=show
3.微信端控制器
需要继承 app\common\controller\WXbase
若有模板,则需要定义 define('ENTRANCE','wx')
访问地址:
wx/plugins/run?_p=test&_c=index&_a=show
参数说明: _p=插件名&_c=控制器名&_a=方法名
插件模板
代理与管理端模板示例:
{extend name="admin@layout"/}
{block name="main"}
我是后台模板[F:\learn\php\xampp\htdocs\hisiphp\/plugins/aaa/view/admin/index/index.html]
{/block}
若为代理端,需要改为 agent@layout
钩子模板
物理路径:/plugins/插件名/view/widget/
示例:/plugins/插件名/view/widget/钩子方法名.html
插件钩子下个文档介绍