neilherbertuk/laravel-modules

此软件包已被 废弃 且不再维护。未建议替代软件包。

Laravel 5 模块提供商

dev-master 2019-01-11 16:10 UTC

This package is auto-updated.

Last update: 2021-02-11 21:04:42 UTC


README

Scrutinizer Code Quality Build Status

一个为 Laravel 5 应用程序添加模块的软件包。此软件包允许您将应用程序的代码部分分离到各自的“模块”或文件夹中,使得与应用程序特定部分或功能相关的所有代码都存储在一个地方。

兼容性

  • Laravel 5.4
  • Laravel 5.5

目前支持

  • 控制器
  • 迁移
  • 模型
  • 路由、Web 和 API
  • 服务提供者
  • 视图
  • 控制台命令

目前不支持

  • 数据库填充
  • 模块中间件

此软件包将很快提供命令来辅助创建这些。

示例

domain.com/admin 的管理面板 - 所有与管理面板相关的功能都可以转换为模块,并存储在单个位置。

示例结构

Admin
 - Admin/controllers
 - - Admin/controllers/AdminController.php
 - Admin/database
 - - Admin/database/migrations
 - - - Admin/database/migrations/Create_A_Table_Migrtion.php
 - Admin/models
 - - Admin/models/statistics.php
 - Admin/views
 - - Admin/views/dashboard.blade.php
 - Admin/web.php

安装

此版本已与 Laravel 5.4 和 5.5 进行了测试,其他版本将在未来进行测试。

$ composer require neilherbertuk/laravel-modules:dev-master

Laravel 5.4

如果您正在使用 Laravel 5.4,您需要在您的 config/app.php 中注册服务提供者。

        neilherbertuk\modules\ModuleServiceProvider::class,

Laravel 5.5

如果您正在使用 Laravel 5.5 或更高版本,自动软件包发现应该会自动加载 ModuleServiceProvider,如果这没有发生,请在您 laravel 项目的根目录中运行以下命令:

$ composer dump-autoload
$ php artisan package:discover

配置

如果您想更改默认配置,请发布软件包的配置文件。

$ php artisan vendor:publish --provider="neilherbertuk\modules\ModuleServiceProvider" --tag=config

这将在您的 app 中创建一个 config/modules.php 文件,您可以修改它来设置您的配置。

软件包可以以多种方式配置。默认情况下,软件包会自动加载位于 app\Modules 文件夹下的模块。

在我看来(如果错了请纠正我),自动加载在开发中很好,但在生产中不推荐使用,因为查找每个可用模块的成本很高。

启用自动加载

这是默认行为,但可以添加到您的 .env 文件中

MODULES_AUTOLOAD=true

禁用自动加载

将以下内容添加到您的 .env 文件中

MODULES_AUTOLOAD=false

手动加载模块

当禁用自动加载时,将手动加载模块。在您的 config/modules.php 文件中,您将找到一个空的 enabled 数组。只需将您希望手动加载的每个模块的名称作为新条目添加即可。每个名称都是您的模块所在的文件夹名称。

'enabled' => [
                'Admin',
                'Forum'
            ],

禁用模块

在使用自动加载时,可以禁用某些模块。在你的 config/modules.php 文件中有一个空的 disabled 数组。列在这里的任何模块都不会被加载。

'disabled' => [
                'Admin'
            ],

使用方法

待完成。

Laravel-Modules 包附带一个方便的控制台命令来帮助构建新的模块。可以通过运行以下命令查看其使用方法

    $ php artisan make:module

创建新模块

要创建一个新模块,请在 Laravel 项目的根目录下运行以下命令

    $ php artisan make:module --create ModuleName [--webroute | --apiroute]

这将在你的 app/Module 文件夹中创建一个如上例所示的新文件夹结构。

新模块路由

除非指定了其他选项,默认情况下,创建命令还将创建一个 Web 路由文件(web.php)。由该命令生成的路由文件将包括一个分组前缀,以帮助将你的模块与其他应用程序部分分开。

如果你希望创建一个 API 路由文件(api.php),请在命令中添加 --apiroute

    $ php artisan make:module --create ModuleName --apiroute

如果你想同时添加 Web 和 API 路由文件,请在创建命令中添加 --webroute--apiroute,或者如果你已经创建了模块,可以使用这些选项而不带 --create

    $ php artisan make:module --create ModuleName --apiroute --webroute

模块名称将自动转换为小写并用作任何生成的路由文件的前缀。如果你创建一个名为 "Dashboard" 的新模块,模块内的任何内容都将可在 domain.com/dashboard/ 下访问。

新模块控制器

您可以使用 --controller 选项创建新模块控制器,也可以选择性地包括 --resource

    $ php artisan make:module ModuleName --controller NameOfController [--resource]

这将在您的 app\Modules\ModuleName\Controllers 文件夹中放置一个新的控制器。默认情况下,这将创建一个普通的控制器。如果您想创建一个资源控制器,请添加 --resource,这将为您包括所有基本的 CRUD 方法。

模块命名空间

与模块相关的所有文件都必须属于同一个命名空间。如果您使用提供的控制台命令,这将为您自动完成。

namespace app\Modules\ModuleName\Controllers;
namespace app\Modules\ModuleName\Models;
namespace app\Modules\ModuleName\Migrations;

待办事项

  • 正在工作 - 完成文档 - 使用部分
  • 正在工作 - 创建命令以轻松创建模块以及模块内的各种部分,如控制器和视图。
  • 正在工作 - 创建示例项目
  • 正在工作 - 测试对 Laravel 5 其他版本的兼容性
  • 创建单元测试

错误

请通过在 github 上打开问题来报告任何错误。

安全问题

请将任何安全问题直接通过电子邮件发送到 neil@ea3.co.uk