megaads/clara-app-store

Laravel 模块管理

1.1.23 2021-05-15 03:55 UTC

README

Laravel 模块管理

系统要求

  • PHP: >=5.6
  • Laravel 框架: >=5.4

安装

Clara 以 composer 包的形式打包,因此可以快速安装

  1. 要求 composer 包

    composer require megaads/clara

  2. 注册提供者

    Megaads\Clara\Providers\ModuleServiceProvider

  3. 注册外观

    Megaads\Clara\Facades\ModuleFacade

  4. 自动加载

默认情况下,模块类不会自动加载。您可以在 composer.json 中自动加载您的模块

{
    "autoload": {
        "psr-4": {            
            "App\\": "app/",
            "Modules\\": "app/Modules"            
        }
    },
    "extra": {
        "merge-plugin": {
            "include": [
                "app/Modules/*/module.json"
            ]
        }
    }
}
  1. 发布配置文件

使用模块提交功能,必须配置存储的 URL。为了生成 clara 配置文件

php artisan vendor:publish --provider="Megaads\Clara\Providers\ModuleServiceProvider"

模块管理

创建模块

php artisan module:make <ModuleName> ...

文件夹结构

app
│
└───Modules
    
    └───ModuleName
        │
        └───Config
        │      app.php
        │
        └───Controllers
        │      Controller.php
        │      ...
        │
        └───Helpers
        │      helper.php
        │      ...
        │
        └───Middlewares
        │      ExampleMiddleware.php
        │      ...
        │
        └───Models
        │      ...
        │
        └───Resources
        │      Views
        │      Assets
        │      ...
        │
        └───Routes
        │      routes.php
        │      ...
        │
        └───Kernel.php
        │
        └───module.json
        │
        └───start.php
  • module.json:模块配置文件基于 composer composer.json。模块.json 中的所有配置都将合并到主 composer.json 中。
  • start.php:模块的启动文件,每次请求都会加载。因此,可以在该文件中注册模块操作、模块视图等。

从文件或 URL 安装模块

php artisan module:install <ZipFilePath> <ZipFileURL> ...

启用模块

php artisan module:enable <ModuleName> ...

禁用模块

php artisan module:disable <ModuleName> ...

删除模块

php artisan module:remove <ModuleName> ...

删除所有模块

php artisan module:remove-all

模块操作

触发操作

使用 PHP

Module::action('action_name', [params]);

使用 blade 语句

@action('action_name', [params])

处理操作

Module::onAction('action_name', function ($params) {  
      
}, PRIORITY);

使用控制器处理操作

Module::onAction('action_name', 'Modules\Example\Controllers\HomeController@action', PRIORITY);

默认情况下,Clara 提供操作

  • module_made
  • module_loaded
  • module_disabled
  • module_enabled
  • module_removed
  • module_removed_all

模块视图

注册视图

使用 PHP

Module::view('view_name', [params], IS_MULTI_LAYER);
Module::view('view_name', 'This is a view placeholder', IS_MULTI_LAYER);
Module::view('view_name', function() {
    return 'This is a view placeholder';
}, IS_MULTI_LAYER);

使用 blade 语句

@view('view_name', [params])

处理视图

Module::onView('view_name', function ($params) {  
    return view('module-namespace:home.index');
}, PRIORITY);

使用控制器处理视图

Module::onView('view_name', 'Modules\Example\Controllers\HomeController@index', PRIORITY);

模块变量

注册变量

使用 PHP

$variable = Module::variable('handle', $default, PRIORITY);

使用 blade 语句

@variable('variable_name', 'handle', $default);

处理变量

Module::onVariable('hanlde', function ($params) {
}, PRIORITY, NUUM_OF_PARAM);

模块资源

Clara 将从模块资源目录 app/Modules/{ModuleName}/Resources/Assets 创建到 public/modules/{ModuleNamespace} 的符号链接

包含模块资源

使用 PHP

<script type="text/javascript" src="<?= Module::asset('{module-namespace}/js/demo.js') ?>"></script>

使用 blade 语句

<script type="text/javascript" src="@asset('{module-namespace}/js/demo.js')"></script>

手动创建模块资源链接

php artisan module:asset:link <ModuleName> ...

模块实用方法

获取所有模块

$modules = Module::all();

获取当前模块

$module = Module::this();

获取模块选项

$option = Module::option('option.name');

设置模块选项

$option = Module::option('option.name', 'option.value');

许可证

Clara 是开源软件,许可协议为 MIT 许可协议

联系我们/即时反馈

电子邮件: info@megaads.vn | phult.contact@gmail.com

如果您发现一个错误,请在此处报告 GitHub