1.0.0 2017-03-26 05:49 UTC

This package is not auto-updated.

Last update: 2024-09-29 02:49:40 UTC


README

这是一个受rappasoft/laravel-5-boilerplate、nwidart/laravel-modules和amamarul/boiler-plate-commands启发的laravel项目,用于大型laravel应用

  • rappasoft/laravel-5-boilerplate
  • nwidart/laravel-modules
  • amamarul/boiler-plate-commands

LaravelModules默认有一个“核心模块”来管理模块和以下模块

  • 基础模块
  • 用户模块
  • 菜单模块

升级指南

安装

快速

要通过composer安装,只需运行以下命令

composer require amamarul/laravel-modules-maru

添加服务提供者

接下来,在config/app.php中添加以下服务提供者。

'providers' => [
  Amamarul\Modules\LaravelModulesServiceProvider::class,
],

接下来,在相同文件中的aliases数组中添加以下别名。

'aliases' => [
  'Module' => Amamarul\Modules\Facades\Module::class,
],

接下来,通过运行以下命令发布包的配置文件

php artisan vendor:publish --provider="Amamarul\Modules\LaravelModulesServiceProvider"

接下来在控制台运行

php artisan module:core:install"

自动加载

默认情况下,控制器、实体或存储库不会被自动加载。您可以使用psr-4来自动加载您的模块。例如

{
  "autoload": {
    "psr-4": {
      "App\\": "app/",
      "Modules\\": "Modules/"
    }
  }
}

配置

  • modules - 用于保存生成的模块。
  • assets - 用于保存每个模块的模块资产。
  • migration - 如果发布模块迁移,则用于保存模块迁移。
  • generator - 用于生成模块文件夹。
  • scan - 用于允许扫描其他文件夹。
  • enabled - 如果为true,则包将扫描其他路径。默认值为false
  • paths - 可以由包自动扫描的路径列表。
  • composer
  • vendor - Composer供应商名称。
  • author.name - Composer作者名称。
  • author.email - Composer作者电子邮件。
  • 缓存
  • enabled - 如果为true,则自动扫描的模块(所有模块)将自动缓存。默认值为false
  • key - 缓存名称。
  • lifetime - 缓存有效期。

创建模块

要创建新模块,您可以直接运行

php artisan module:make <module-name>
  • <module-name> - 必需的。要创建的模块名称。

创建新模块

php artisan module:make Blog

创建多个模块

php artisan module:make Blog User Auth

当模块创建完成后,您可以选择是否希望在空文件夹中生成“.gitkeep”文件

  • 如果选择“是”,您可以在以后运行module:gitkeep:remove <MODULE NAME>来删除它们。
  • 如果选择“否”,您可以在以后运行module:gitkeep <MODULE NAME>来生成它们。

默认情况下,如果您创建一个新模块,将会自动添加一些资源,如控制器、种子类或提供者。如果您不希望这些,可以添加--plain标志,以生成一个纯模块。

php artisan module:make Blog --plain
#OR
php artisan module:make Blog -p

从GitHub导入新模块

在控制台运行

php artisan module:new:install <ModuleName> <gitUser>/<repositoryName>

示例

php artisan module:new:install Users laravelmodules/users

命名约定

因为我们使用psr-4来自动加载模块,所以我们强烈建议使用StudlyCase约定。

文件夹结构

laravel-app/
app/
bootstrap/
vendor/
Modules/
  ├── Blog/
      ├── Assets/
      ├── Breadcrumbs/
      ├── Config/
      ├── Console/
      ├── Database/
          ├── Migrations/
          ├── Seeders/
      ├── Emails/
      ├── Events/
      ├── Helpers/
          ├── helpers.php
      ├── Http/
          ├── Controllers/
              ├── Backend/
              ├── Dashboard/
              ├── Frontend/
          ├── Middleware/
          ├── Requests/
              ├── Backend/
              ├── Dashboard/
              ├── Frontend/
      ├── Jobs/
      ├── Models/
      ├── Notifications/
      ├── Providers/
          ├── BlogServiceProvider.php
          ├── BreadcrumbsServiceProvider.php
          ├── RouteServiceProvider.php
          ├── SidebarServiceProvider.php
      ├── Repositories/
          ├── Backend/
          ├── Dashboard/
          ├── Frontend/
      ├── routes/
          ├── Backend/
              ├── routes.php
          ├── Dashboard/
              ├── routes.php
          ├── Frontend/
              ├── routes.php
          ├── routes.php
      ├── Resources/
          ├── lang/
          ├── views/
      ├── Sidebar/
          ├── admin.php
          ├── dashboard.php
      ├── Tests/
      ├── composer.json
      ├── module.json
      ├── start.php

Artisan命令

创建新模块。

php artisan module:make blog

使用指定的模块。

php artisan module:use blog

在命令行中显示所有模块。

php artisan module:list

为指定的模块创建新命令。

php artisan module:make-command CustomCommand blog

php artisan module:make-command CustomCommand --command=custom:command blog

php artisan module:make-command CustomCommand --namespace=Modules\Blog\Commands blog

为指定的模块创建新迁移。

php artisan module:make-migration create_users_table blog

php artisan module:make-migration create_users_table --fields="username:string, password:string" blog

php artisan module:make-migration add_email_to_users_table --fields="email:string:unique" blog

php artisan module:make-migration remove_email_from_users_table --fields="email:string:unique" blog

php artisan module:make-migration drop_users_table blog

回滚、重置和刷新模块迁移。

php artisan module:migrate-rollback

php artisan module:migrate-reset

php artisan module:migrate-refresh

回滚、重置和刷新指定模块的迁移。

php artisan module:migrate-rollback blog

php artisan module:migrate-reset blog

php artisan module:migrate-refresh blog

为指定的模块创建新种子。

php artisan module:make-seed users blog

从指定模块迁移。

php artisan module:migrate blog

从所有模块迁移。

php artisan module:migrate

从指定的模块播种。

php artisan module:seed blog

从所有模块播种。

php artisan module:seed

为指定的模块创建新的控制器。

php artisan module:make-controller SiteController blog

将指定模块的资产发布到公共目录。

php artisan module:publish blog

将所有模块的资产发布到公共目录。

php artisan module:publish

为指定的模块创建新的模型。

php artisan module:make-model User blog

php artisan module:make-model User blog --fillable="username,email,password"

为指定的模块创建新的服务提供者。

php artisan module:make-provider MyServiceProvider blog

发布指定模块或所有模块的迁移。

当您想回滚迁移时很有用。您也可以运行 php artisan migrate 而不是 php artisan module:migrate 命令来迁移迁移。

对于指定的模块。

php artisan module:publish-migration blog

对于所有模块。

php artisan module:publish-migration

发布模块配置文件

php artisan module:publish-config <module-name>
  • (可选)module-name:要发布的配置的模块名称。留空将发布所有模块。
  • (可选)--force:强制发布,覆盖已发布的文件

启用指定的模块。

php artisan module:enable blog

禁用指定的模块。

php artisan module:disable blog

生成新的中间件类。

php artisan module:make-middleware Auth

生成新的邮件可发送类。

php artisan module:make-mail WelcomeEmail

生成新的通知类。

php artisan module:make-notification InvoicePaid

更新指定模块的依赖项。

php artisan module:update ModuleName

更新所有模块的依赖项。

php artisan module:update

显示模块列表。

php artisan module:list

在空文件夹中生成 .gitkeep 文件。

php artisan module:gitkeep ModuleName

从模块文件夹中删除 .gitkeep 文件。

php artisan module:gitkeep:remove ModuleName

路由

显示模块路由列表。

php artisan module:route:list
  • 显示特定模块的路由。
php artisan module:route:list --module="<MODULE_MANE>"

与常规 php artisan route:list 一样,您可以使用其他选项过滤器

  • 可用的选项包括
    • 主机 (--host="")
    • 模块 (--module="")
    • 方法 (--method="")
    • URI (--uri="")
    • 名称 (--name="")
    • 操作 (--action="")
    • 中间件 (--middleware="")

辅助函数

配置

获取通用模块配置。

module_config(<MODULE>.config.name);
config/
  ├── module/
      ├── example/
          ├── config.php
          ├── example.php
      ├── othermodule/
          ├── config.php
          ├── othermodule.php

例如,如果您有一个名为 "Example" 的模块

module_config(example.config.name);

获取特定模块配置。

example_config(config.name);

门面

获取所有模块。

Module::all();

获取所有缓存的模块。

Module::getCached()

获取有序模块。模块将按 module.json 文件中的 priority 键排序。

Module::getOrdered();

获取已扫描的模块。

Module::scan();

查找特定模块。

Module::find('name');
// OR
Module::get('name');

查找模块,如果有,则返回 Module 实例,否则抛出 Amamarul\Modules\Exeptions\ModuleNotFoundException

Module::findOrFail('module-name');

获取已扫描的路径。

Module::getScanPaths();

获取所有模块作为集合实例。

Module::toCollection();

按状态获取模块。1 为活动状态,0 为非活动状态。

Module::getByStatus(1);

检查指定的模块。如果存在,则返回 true,否则返回 false

Module::has('blog');

获取所有启用的模块。

Module::enabled();

获取所有禁用的模块。

Module::disabled();

获取所有模块的数量。

Module::count();

获取模块路径。

Module::getPath();

注册模块。

Module::register();

启动所有可用的模块。

Module::boot();

获取所有启用的模块作为集合实例。

Module::collections();

从指定的模块获取模块路径。

Module::getModulePath('name');

从指定的模块获取资产路径。

Module::assetPath('name');

从此包获取配置值。

Module::config('composer.vendor');

获取使用的存储路径。

Module::getUsedStoragePath();

获取 CLI 会话使用的模块。

Module::getUsedNow();
// OR
Module::getUsed();

设置 CLI 会话使用的模块。

Module::setUsed('name');

获取模块的资产路径。

Module::getAssetsPath();

从特定模块获取资产 URL。

Module::asset('blog:img/logo.img');

通过给定的模块名称安装指定的模块。

Module::install('nwidart/hello');

更新指定模块的依赖项。

Module::update('hello');

向模块仓库添加宏。

Module::macro('hello', function() {
    echo "I'm a macro";
});

从模块仓库调用宏。

Module::hello();

获取模块的所有必需模块。

Module::getRequirements('module name');

模块实体

从特定模块获取实体。

$module = Module::find('blog');

获取模块名称。

$module->getName();

获取小写模块名称。

$module->getLowerName();

获取 Studlycase 模块名称。

$module->getStudlyName();

获取模块路径。

$module->getPath();

获取额外路径。

$module->getExtraPath('Assets');

禁用指定的模块。

$module->disable();

启用指定的模块。

$module->enable();

删除指定的模块。

$module->delete();

获取模块要求数组的模块。注意:这些应该是模块的别名。

$module->getRequires();

自定义命名空间

当你创建一个新的模块时,也会为LangViewConfig注册新的自定义命名空间。例如,如果你创建了一个名为blog的新模块,它将也会为该模块注册新的命名空间/提示blog。然后,你可以使用这个命名空间来调用LangViewConfig。以下是它使用的一些示例

调用Lang

Lang::get('blog::group.name');

调用View

View::make('blog::index')

View::make('blog::partials.sidebar')

调用Config

Config::get('blog.name')

发布模块

你创建过laravel模块吗?是的,我创建过。那么,我想发布我的模块。在哪里发布它?这就是问题。答案是什么?答案是Packagist

自动扫描供应商目录

默认情况下,不会自动扫描vendor目录,你需要更新配置文件来允许这样做。将scan.enabled值设置为true。例如

// file config/modules.php

return [
  //...
  'scan' => [
    'enabled' => true
  ]
  //...
]

你可以使用module:list命令来验证模块是否已安装

php artisan module:list

发布模块

两种方式

  1. 控制台方式
  • 验证LaravelModules列表中的可用模块 你可以为一个现有的模块做出贡献以进行改进
  • 准备GitHub
        php artisan module:share <module-name>

推送到GitHub

php artisan module:push <module-name>
  1. 手动方式 在创建模块并且你确信你的模块将被其他开发者使用后。你可以将你的模块推送到GitHubBitbucket,然后你可以将你的模块提交到Packagist网站。

你可以按照以下步骤来发布你的模块。

  1. 创建一个模块。
  2. 将模块推送到GitHub。
  3. 将你的模块提交到Packagist网站。提交到Packagist非常简单,只需提供你的GitHub仓库,点击提交就完成了。

鸣谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。