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 即可看到:

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

posted @ 2022-07-04 23:04  帅到要去报警  阅读(300)  评论(0)    收藏  举报