megaads/clara

2.0.0 2022-11-23 08:28 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. 发布Clara配置

要覆盖Clara默认配置选项,您需要将Clara配置文件发布到应用程序的配置目录。

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

模块管理

创建模块

php artisan module:make <ModuleName> ...

命名规范

模块名称应遵循UpperCamelCase语法(不带任何空格字符)。例如:FacebookComment

和模块命名空间在kebab-case中对应于CamelCase模块名称。例如:facebook-comment

文件夹结构

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.json形式。所有module.json中的属性都将合并到项目的composer.json中。
  • start.php:模块的启动文件,将在每次请求时加载。因此可以在该文件中注册模块操作、模块视图等。

模块安装

使用模块名称安装模块

php artisan module:install <ModuleName>

Clara将搜索您在config/clara.php配置中注册的应用程序存储库中请求的模块名称,下载模块文件后,Clara将模块配置添加到module.json文件中。

module.json安装模块列表

php artisan module:install

这将搜索并下载module.json中列出的模块到app/Modules/目录。

从zip文件或URL安装模块

php artisan module:install <ModuleZipFilePath> <ModuleZipFileURL> ...

启用模块

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\ExampleModule\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/{module-namespace}的符号链接。

包含模块资源

使用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>

为所有激活的模块手动创建模块资源链接

php artisan module:asset:link --all

模块配置

所有模块配置文件都存储在{ModuleName}/Config目录中

访问配置值

有时您可能需要在运行时访问配置值。您可以使用Config类这样做。

Config::get('{module-namespace}::app.message', 'hello world');

模块实用方法

获取所有模块

$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上报告