vaeThink-插件开发


vaeThink 植入了插件系统,用户可以在不更改核心代码的前提下开发适用于自己项目的各类插件,当然了,我们非常欢迎广大开发者能够踊跃开发出通用类的插件来造福广大vaeThink使用者。
插件基础
vaeThink的插件目录位于public/plugin,所有的插件都要放在这个目录下,否则系统会加载不到。
public/plugin目录下的每一个子目录都代表一个插件,插件表示就是每一个子目录的名字。
标准的插件目录及文件结构应当如下:
  ├─pluginName                      某个插件的目录
  │  ├─controller                   业务逻辑类库目录
  │  ├─view                         静态资源目录
  │  ├─PluginNameConfig.php         插件额外配置文件
  │  └─PluginNameIndex.php          插件入口文件
      
入口文件(以Demo插件为例)
  namespace plugin\demo;
  use vae\lib\Plugin;

  class DemoIndex extends Plugin //必须继承 vae\lib\Plugin类文件
  {
      //插件基本配置信息,必须配置
      public $explain = [
          // 插件标识,要和目录名字一致
          'name'        => 'Demo',
          // 实现插件的钩子
          'hook'        => 'admin_main',
          // 插件名字
          'title'       => '插件演示',
          // 插件介绍
          'desc'        => '功能:自定义后台首页',
          // 插件作者
          'author'      => '听雨',
          // 是否需要配置
          'interface'   => 0,
      ];

      //业务逻辑
      public function index($params)
      {
          //获取当前插件额外配置,$key可不传
          echo $this->config($key);
          //渲染view目录下的index模板并赋值
          return $this->share('index',[
              'data' => $this->explain,
          ]);
      }

      //必须实现配置
      public function setConfig()
      {
          return true;
      }

      //必须实现安装
      public function install()
      {
          return true;
      }

      //必须实现卸载
      public function uninstall()
      {
          return true;
      }
  }
      
额外配置
  //额外配置文件位于插件根目录下,命名方式为PluginNameConfig.php
  //如Demo插件的额外配置文件为DemoConfig.php
  return [

      'config1' => 'vaeThink',
      'config2' => [
        'config2-1' => 'vaeThink',
        'config2-2' => 'vaeThink666',
      ]
  ];
      
业务类
简单的插件的业务逻辑一般在入口文件中的index方法就能完成,对于有些复杂的插件,可以定义额外的业务类
  //在controller目录下定义业务类,以Demo插件为例
  namespace plugin\Demo\Controller;
  use vae\controller\PluginControllerBase;

  class PortcheckauthController extends PluginControllerBase //必须继承vae\controller\PluginControllerBase类
  {
      static public function index($param)
      {
          //业务逻辑
      }
  }


  //如果你的插件模板需要访问业务类,访问的路径应该以/plugin开头/插件名/业务类名/方法,比如某个插件的配置信息提交(v1.0.1新增)
  form.on('submit(demo1)', function(data){
    $.ajax({
      url:"/plugin/watermark/setConfig/setConfigSubmit",
      data:data.field,
      type:"post",
      success:function(res){
        layer.msg(res.msg);
      }
    })
    return false;
  });

      
在使用业务类中的操作方法时,只需要use过去就可以使用了
vaeThink 想你所想。