• MeEdu开发插件


    最近需要用MeEdu开发一个功能,采用插件来开发,下面是开发流程:

    首先阅读开发文档:

    https://www.yuque.com/meedu/lbss8g/caobg0

    快速开始:

    第一步:创建插件目录:在 addons 创建 school目录;

    第二步:school创建 meedu.json 文件

    {
      "name": "快速开始",
      "version": "v1.0",
      "require": {}
    }

    第三步:创建 Commands 目录  新建 AppCommand.php 文件

    <?php
    namespace Addons\School\Commands;
    use Illuminate\Console\Command;
    class AppCommand extends Command
    {
        protected $signature = 'School {action}';
        protected $description = '';
        public function handle()
        {
            $action = $this->argument('action');
            $method = 'action' . ucfirst($action);
            $this->{$method}();
        }
        protected function actionInstall()
        {
            // 插件安装执行的业务逻辑
        }
        protected function actionUninstall()
        {
            // 插件卸载执行的业务逻辑
        }
        protected function actionUpgrade()
        {
            // 插件升级执行的业务逻辑
        }
    }

    第四步:school目录下创建 MainServiceProvider.php

    <?php
    namespace Addons\School;
    use Addons\School\Commands\AppCommand;
    use Illuminate\Support\Facades\Route;
    use Illuminate\Support\ServiceProvider;
    
    class MainServiceProvider extends ServiceProvider
    {
        public function boot()
        {
            // 注册插件命令
            $this->commands([
                AppCommand::class,
            ]);
        }
        public function register(){}
    }

    第五步:创建 Http目录,创建 Controller 目录,创建 IndexController.php

    <?php
    namespace Addons\School\Http\Controllers;
    class IndexController
    {
        public function index()
        {
            return 'hello school';
        }
    }

    第六步:创建路由目录:routes  创建 web.php 文件

    <?php
    
    use Addons\School\Http\Controllers\IndexController;
    
    Route::get('/school/index', IndexController::class . '@index');

    创建之后,则是注册路由:在 MainServiceProvider.php 文件的 boot 方法中添加下面代码:

    <?php
    namespace Addons\School;
    use Addons\School\Commands\AppCommand;
    use Illuminate\Support\Facades\Route;
    use Illuminate\Support\ServiceProvider;
    
    class MainServiceProvider extends ServiceProvider
    {
        public function boot()
        {
            // 注册插件命令
            $this->commands([
                AppCommand::class,
            ]);
            // 注册路由
            Route::middleware(['web', 'global.share'])->group(base_path('addons/School/routes/web.php'));
        }
        public function register(){}
    }

    整个基本的插件目录:

    到这里一个插件就开发完成了。

    插件开发完成之后,还需要挂载一下,我们查看系统项目命令:

    php artisan

    还需要在根目录运行一个命令:

    php artisan addons:provider:map

    然后即可看到 addons / addons_service_provider.json 文件,已经有:

    "\\Addons\\School\\MainServiceProvider"

    然后访问:/school/index 即可看到:

    到此,最基础的插件开发完成。

  • 相关阅读:
    C语言调用汇编函数 实现超过32位数的加法
    【Qt学习笔记】13_富文本及打印页面
    Java初级回顾
    Java中FileInputStream和FileOutputStream类实现文件夹及文件的复制粘贴
    Java中File类如何扫描磁盘所有文件包括子目录及子目录文件
    学习笔记之循环链表
    练习 hdu 5523 Game
    学习笔记之集合ArrayList(1)和迭代器
    学习笔记之工厂方法模式
    学习笔记之基本数据类型-包装类-String之间的转换
  • 原文地址:https://www.cnblogs.com/e0yu/p/16444793.html
Copyright © 2020-2023  润新知