kodicms/module-loader

3.2.1 2016-05-25 09:09 UTC

README

此包帮助为Laravel框架组织模块化结构。

https://packagist.org.cn/packages/kodicms/module-loader

安装

要安装此包,您可以在控制台运行以下命令:

composer require "kodicms/module-loader:3.*"

或者将包添加到 composer.json

{
  "require": {
    ...
    "kodicms/module-loader": "3.*"
       ...
  }
}
添加服务提供者到加载
'providers' => [
  ...
  KodiCMS\ModulesLoader\Providers\ModuleServiceProvider::class,
  ...
],
composer.json 中添加命名空间
{
  "autoload": {
    ...
    "psr-4": {
      ...
      "Modules\\"  : "modules/"
    },
    ...
  },
}
配置文件 app.php

默认情况下,系统模块存储在 modules 文件夹中,如果需要从其他目录加载模块,则必须通过配置文件指定模块的路径和命名空间。

return [
  ...
  'modules' => [
    'modulename', // Namespace: Modules\modulename, Path baseDir/modules/modulename
    'ModuleName2' => [
      'path' => {relative path to module},
      'namespace' => '\\CustomNamespace\\ModuleName2\\'
    ]
  ]
  ...
];

默认情况下,加载器在连接模块时使用 KodiCMS\ModulesLoader\ModuleContainer,您可以通过创建一个位于 app\DefaultModuleContainer.php 路径的文件来覆盖容器文件,或者如果您想改变特定模块的行为,则需要在模块根目录创建一个 ModuleContainer.php 文件并从 KodiCMS\ModulesLoader\ModuleContainer 继承。

模块结构

  • Assets - 将被复制到 public/cms/modules/{module} 的资产
  • config - 模块的配置。如果模块中有同名配置文件,则它们的内容将被合并
  • 控制台
    • Commands - 控制台命令文件的存储位置
  • 数据库
    • migrations - 将在 modules:migrate 命令中运行的迁移文件
    • 种子
      • DatabaseSeeder.php - 如果存在,将在 modules:seed 命令中运行
  • HTTP
    • Controllers - 模块的控制台
    • routes.php - 当前模块的路由,被包装在 Modules\{module} 命名空间中
  • 提供者
    • ModuleServiceProvider.php - 模块服务提供者,如果文件存在,将在应用程序初始化时运行
  • 资源
    • lang - 模块的翻译文件,可以通过模块名称的小写键访问 trans('{module}::file.key')
    • views - 模板的模块,可以通过模块名称的小写键访问 view('{module}::template')
  • ModuleContainer.php - 如果此文件存在,则将作为系统模块文件连接,其中指定了初始化时的相对路径和操作。必须从 KodiCMS\ModulesLoader\ModuleContainer 继承。

控制台命令

  • php artisan modules:list - 显示已连接模块列表
  • php artisan modules:migrate - 运行模块中的迁移 (具有与标准 migrate 命令类似参数)
  • php artisan modules:seed - 从模块中种植数据
  • php artisan modules:assets:publish - 将 Assets 文件夹中的文件发布到 public/modules/{module}