快速入门

插件是基于EduSoho系统下可自由安装卸载掉的程序。在不影响EduSoho系统代码的情况下,可自由扩展新功能。那么如何创建插件呢,EduSoho系统提供了一组插件命令,可以对插件进行快速操作。

创建插件

创建插件的初始目录结构:

  1. app/console plugin:create Example

使用此命令会在plugins目录下创建名为Example的插件初始目录结构,参见目录结构

注册插件

注册插件:

  1. app/console plugin:register Example

注册插件,但不创建数据库:

  1. app/console plugin:register Example --without-database

开发模式下,建议使用—without-database选项。您可在执行此命令之后,使用:bin/phpmig migrate命令来创建数据库,这样数据库的变更就纳入了phpmig的管理,方便开发过程中调整数据库。插件注册后,即可在后台->教育云->ES应用->已购项目中查看。

卸载插件

卸载插件(默认不删除数据库):

  1. app/console plugin:remove Example

卸载插件,删除数据库:

  1. app/console plugin:remove Example --with-deleting-database

卸载插件,删除数据库及插件源码目录:

  1. app/console plugin:remove Example --with-deleting-database --with-deleting-source

目录结构

如果您的插件名称为Demo那么目录结构为:

  1. plugins/
  2. DemoPlugin/
  3. Biz/ ----业务目录
  4. Dao/
  5. Service/
  6. Controller/ ----控制层目录
  7. DependencyInjection
  8. Configuration.php
  9. DemoPluginExtension.php
  10. Migrations/ ----升级脚本目录
  11. Resources/
  12. config
  13. static-dist ----静态资源(编译后)
  14. static-src ----静态资源js,less,img,font
  15. views ----视图层(twig页面)
  16. Scripts/ ----安装脚本目录
  17. BaseInstallScript.php
  18. InstallScript.php
  19. DemoPlugin.php
  20. plugin.json ----插件相关信息文件

元信息文件

即插件目录下的plugin.json

  1. {
  2. "code": "Demo",
  3. "name": "演示插件",
  4. "description": "这是一个演示插件",
  5. "author": "EduSoho官方",
  6. "version": "1.0.0",
  7. "support_version": "8.0.0"
  8. }
  • version:插件版本
  • support_version: 支持EduSoho系统的版本

引导文件

即插件目录下的DemoPlugin.php

  1. <?php
  2. namespace DemoPlugin;
  3. use Codeages\PluginBundle\System\PluginBase;
  4. class DemoPlugin extends PluginBase
  5. {
  6. /*
  7. public function boot()
  8. {
  9. $biz = $this->container->get('biz');
  10. parent::boot();
  11. }
  12. */
  13. }
  • DemoPlugin类必须继承自Codeages\PluginBundle\System\PluginBase类。
  • 可以通复写boot()方法往biz中注入自定义服务。

Migrations 目录

该目录是多人协同开发时的脚本文件目录,方便开发时数据库的修改。可在EduSoho根目录通过命令行生成脚本文件:

  1. bin/phpmig generate create_demo_table plugins/DemoPlugin/Migrations/
  • createdemo_table:类名,以分隔。
  • plugins/DemoPlugin/Migrations/:插件Migrations目录路径