megaads / clara
Laravel模块管理
Requires
- php: >=5.6.4
- illuminate/support: >=5.3
- jeremeamia/superclosure: ^2.4
- laravel/framework: 5.4.*
- megaads/composer-merge-plugin: *
- dev-master
- 2.0.0
- 1.1.47
- 1.1.46
- 1.1.45
- 1.1.44
- 1.1.43
- 1.1.42
- 1.1.41
- 1.1.40
- 1.1.39
- 1.1.38
- 1.1.37
- 1.1.36
- 1.1.35
- 1.1.34
- 1.1.33
- 1.1.32
- 1.1.31
- 1.1.30
- 1.1.29
- 1.1.28
- 1.1.27
- 1.1.26
- 1.1.25
- 1.1.24
- 1.1.23
- 1.1.22
- 1.1.21
- 1.1.20
- 1.1.19
- 1.1.18
- 1.1.17
- 1.1.16
- 1.1.15
- 1.1.14
- 1.1.13
- 1.1.12
- 1.1.11
- 1.1.10
- 1.1.9
- 1.1.8
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.0
- dev-release-clara-v1
- dev-l52
- dev-l54
- dev-old-laravel-version
This package is auto-updated.
Last update: 2024-09-30 03:06:22 UTC
README
Laravel模块管理
系统要求
- PHP: >=5.6
- Laravel框架: >=5.4
安装
Clara被打包为composer包,因此可以快速安装。
-
需要composer包
composer require megaads/clara
-
注册提供者
Megaads\Clara\Providers\ModuleServiceProvider
-
注册外观
Megaads\Clara\Facades\ModuleFacade
-
自动加载
默认情况下,模块类不会自动加载。您可以在composer.json中自动加载您的模块。
{ "autoload": { "psr-4": { "App\\": "app/", "Modules\\": "app/Modules" } }, "extra": { "merge-plugin": { "include": [ "app/Modules/*/module.json" ] } } }
- 发布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上报告