itvisionsy/laravel-modules

Laravel 5.1 库,允许模块化结构。每个模块都可以拥有自己的路由、控制器、视图、配置等。

v1.2.2 2017-04-09 09:01 UTC

This package is not auto-updated.

Last update: 2024-09-14 20:35:42 UTC


README

laravel 5.1 的模块管理库

Packagist license Build Status PHP Laravel

允许您的项目拥有模块化结构。每个模块都可以拥有自己的视图、配置、路由、控制器等。

安装

  1. 该包依赖于所有 Laravel 项目的 composer PSR-4 载入器。使用 composer 命令
    composer require itvisionsy/laravel-modules
    
  2. \ItvisionSy\Laravel\Modules\ServiceProvider::class 添加到 config/app.php 文件的 providers 部分
    'providers'=>[
       //...
       \ItvisionSy\Laravel\Modules\ServiceProvider::class,
    ],
  3. 使用命令发布配置文件
    php artisan vendor:publish
    
    这将把 modules.php 配置文件复制到您的 config 文件夹。
  4. 根据需要修改 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}]

idnameurl 的值是字符串。名称和 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 属性。

谢谢