itvisionsy / laravel-modules
Laravel 5.1 库,允许模块化结构。每个模块都可以拥有自己的路由、控制器、视图、配置等。
Requires
- php: >=5.5.9
- laravel/framework: 5.1.*
- nette/reflection: ^2.4
Requires (Dev)
- laravel/laravel: ^5.1
- phpunit/phpunit: ^5.7
This package is not auto-updated.
Last update: 2024-09-14 20:35:42 UTC
README
laravel 5.1 的模块管理库
允许您的项目拥有模块化结构。每个模块都可以拥有自己的视图、配置、路由、控制器等。
安装
- 该包依赖于所有 Laravel 项目的 composer PSR-4 载入器。使用 composer 命令
composer require itvisionsy/laravel-modules - 将
\ItvisionSy\Laravel\Modules\ServiceProvider::class添加到config/app.php文件的 providers 部分'providers'=>[ //... \ItvisionSy\Laravel\Modules\ServiceProvider::class, ],
- 使用命令发布配置文件
这将把php artisan vendor:publishmodules.php配置文件复制到您的config文件夹。 - 根据需要修改
config/modules.php配置文件。
工作原理
您的模块应放在根模块文件夹中。默认情况下,这是 app/Modules,映射到命名空间 \App\Modules。
您的每个模块都将在模块根文件夹内部有一个自己的文件夹,该文件夹将命名为模块名称,并映射到命名空间 \App\Modules\{ModuleName}。
每个模块将包含一个基本模块定义类,默认情况下将被命名为 Module.php,并映射到命名空间 \App\Modules\{ModuleName}\Module。此类将作为模块 URL、路由和其他框架相关值的键生成器。
每个模块将包含其数据模型、控制器、视图、路由和其他项目文件,就像往常一样。composer PSR-4 载入器应负责正确加载您的模块文件和类。
您的模块控制器(默认情况下放入 Http/Controllers 文件夹)应继承 ItvisionSy\Laravel\Modules\Controller 类,以使视图渲染和其他任务更加容易。
创建模块
要创建一个新模块,您可以使用 artisan 命令
php artisan modules:make {id} [{name}] [--url={url}]
id、name 和 url 的值是字符串。名称和 URL 部分是可选的。URL 将用于生成更人性化的模块 URL。名称仅用于人类识别和可读性。
此命令将在模块文件夹内部创建基本的文件夹结构,包括基本模块和示例路由(在 Http/routes.php 内部)、控制器(在 Http/Controllers/ 内部)和视图(在 Views 内部)。
有了基本结构后,您就可以像往常一样创建文件和类。没有什么特别的要注意。
什么是存储处理器
这是一个功能,允许将每个模块的配置保存到数据库中,以及一个标识模块是否启用或禁用的标志。
您需要一个实现了 ItvisionSy\Laravel\Modules\Interfaces\KeyValueStoreInterface 接口的类,该接口定义了两个方法:set($key, $value) 和 get($key, $default=null)。
在 \ItvisionSy\Laravel\Modules\StoreHandlers\ 命名空间中提供了两个现成的实现,一个是名为 MysqlSimpleDbStoreHandler 的,另一个是 SqliteSimpleDbStoreHandler,它利用 DB 连接(默认情况下为默认连接)将配置存储在简单的键值表中。
默认情况下,该功能是禁用的,通过将 \ItvisionSy\Laravel\Modules\StoreHandlers\DummyStoreHandler 类作为存储处理器来设置。要启用它,只需将 config/modules.php 配置文件中的 store_handler 配置设置更改为使用上面提到的两个类之一即可。
//config/modules.php config file 'store_handler' => \ItvisionSy\Laravel\Modules\StoreHandlers\SqliteSimpleDbStoreHandler::class,
此外,您还需要为商店创建数据库表。我们提供了一个简单的 artisan 命令来完成这项工作。在您正确配置好一切之后,只需执行以下命令:php artisan modules:db:init,这将执行以下 SQL 命令来创建数据库表:
CREATE TABLE IF NOT EXISTS `modules_storage` ( `key` VARCHAR(200) UNIQUE NOT NULL PRIMARY KEY, `value` VARCHAR(200) NULL );
您也可以手动创建表,并通过扩展类来覆盖其名称,改变 $tableName 属性。
谢谢
- JetBrains 提供了免费的 PHPStorm IDE 许可证。这是我编写此模块的强大工具。