llama-laravel/modules

Laravel 模块管理

v1.1.2 2017-07-12 08:21 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:25:22 UTC


README

Latest Version on Packagist Software License Build Status Scrutinizer Coverage SensioLabsInsight Quality Score Total Downloads

llama-laravel/modules 是一个 Laravel 扩展包,用于通过模块管理大型 Laravel 应用。模块类似于 Laravel 扩展包,它包含一些视图、控制器或模型。

此扩展包在 Laravel 5 中得到支持和测试。

此扩展包受到了 nwidart/laravel-modules 的启发。

升级指南

安装

快速

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

composer require llama-laravel/modules

添加服务提供者

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

'providers' => [
  Llama\Modules\ModuleServiceProvider::class,
],

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

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

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

php artisan vendor:publish --provider="Llama\Modules\ModuleServiceProvider"

自动加载

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

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

之后,您必须运行以下语句以转储自动加载器

composer dump-autoload -o

配置

  • modules - 用于保存生成的模块。
  • assets - 用于保存来自每个模块的模块资产。
  • migration - 用于保存模块迁移(如果您发布模块迁移)。
  • seed - 用于保存模块种子(如果您发布模块种子)。
  • 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> - 必填。要创建的模块名称。

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

php artisan module:make <module-name> --plain
#OR
php artisan module:make <module-name> -p

命名约定

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

文件夹结构

your-laravel/app/Modules/
  ├── Blog/
      ├── Config/
      ├── Database/
          ├── Seeds/
      ├── Http/
          ├── Controllers/
      ├── Providers/
      ├── Resources/
          ├── assets/
          ├── lang/
          ├── views/
      ├── Routes/
          ├── web.php
          ├── api.php
      ├── composer.json
      ├── module.json

Artisan 命令

您必须为首次使用设置模块文件夹

php artisan module:setup

创建新模块。

php artisan module:make blog

使用指定的模块。

php artisan module:use blog

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

php artisan module:list

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

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

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

php artisan module:make-migration create_users_table blog
#OR
php artisan module:make-migration create_users_table blog --create=users
#OR
php artisan module:make-migration add_email_to_users_table blog --table=users

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

php artisan module:migrate-rollback
#OR
php artisan module:migrate-reset
#OR
php artisan module:migrate-refresh

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

php artisan module:migrate-rollback blog
#OR
php artisan module:migrate-reset blog
#OR
php artisan module:migrate-refresh blog

从指定模块迁移。

php artisan module:migrate blog

从所有模块迁移。

php artisan module:migrate

为指定模块创建新种子。

php artisan module:make-seeder PostsTableSeeder blog

从指定模块种子。

php artisan module:db-seed blog

从所有模块种子。

php artisan module:db-seed

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

php artisan module:make-controller SiteController blog

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

php artisan module:link blog

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

php artisan module:link

为指定模块创建新模型。

php artisan module:make-model User blog

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

php artisan module:make-provider MyServiceProvider blog

为指定模块创建新策略。

php artisan module:make-policy PostsPolicy blog

为指定模块创建新路由提供者。

php artisan module:make-route blog

为指定模块创建新表单请求。

php artisan module:make-request CreateRequest blog

为指定模块创建新事件。

php artisan module:make-event CreateEvent blog

为指定模块创建新任务。

php artisan module:make-job CreateJob blog

为指定模块创建新监听器。

php artisan module:make-listener CreateListener blog --event="App\Modules\Blog\Events\CreateEvent"

为指定模块创建新中间件。

php artisan module:make-middleware CreateNewPostMiddleware blog

为指定模块创建新邮件。

php artisan module:make-mail WelcomeEmail checkout
#OR
php artisan module:make-mail WelcomeEmail checkout --markdown=emails.checkout.shipped

为指定模块创建新通知。

php artisan module:make-notification InvoicePaid checkout
#OR
php artisan module:make-notification InvoicePaid checkout --markdown=notifications.checkout.shipped

启用指定模块。

php artisan module:enable blog

禁用指定模块。

php artisan module:disable blog

更新指定模块的依赖。

php artisan module:update blog

更新所有模块的依赖。

php artisan module:update

显示模块列表。

php artisan module:list

Facades

使用模型工厂

通常,您可以使用 模型工厂 来方便地生成大量数据库记录。我已定义了一种为指定模块编写种子数据的新方法。

Module::factory(App\User::class, 50)->create()->each(function ($u) {
    $u->posts()->save(factory(App\Post::class)->make());
});

获取所有模块。

Module::all();

获取所有缓存的模块。

Module::getCached()

获取排序后的模块。模块将根据 module.json 文件中的 priority 键进行排序。

Module::getOrdered();

获取已扫描的模块。

Module::scan();

查找特定模块。

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

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

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

获取已扫描的位置。

Module::getScannedLocations();

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

Module::toCollection();

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

Module::getByStatus(1);

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

Module::has('blog');

获取所有启用的模块。

Module::activated();

获取所有禁用的模块。

Module::deactivated();

获取所有模块的数量。

Module::count();

获取模块路径。

Module::getPath();

注册模块。

Module::register();

启动所有可用模块。

Module::boot();

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

Module::collections();

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

Module::getModulePath('name');

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

Module::assetPath('name');

从本包获取配置值。

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

获取使用的存储路径。

Module::getUsedStoragePath();

获取用于 cli 会话的使用的模块。

Module::used();

为 cli 会话设置使用的模块。

Module::used('name');

获取模块的资产路径。

Module::getAssetsPath();

获取模块的命名空间。

Module::getNamespace();

从特定模块获取资产 URL。

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

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

Module::install('llama-laravel-modules/hello');

更新指定模块的依赖。

Module::update('hello');

实体

从特定模块获取实体。

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

获取模块名称。

$module->getName();

获取小写模块名称。

$module->getLowerName();

获取大驼峰式模块名称。

$module->getStudlyName();

获取模块路径。

$module->getPath();

获取额外路径。

$module->getExtraPath('assets');

禁用指定模块。

$module->disable();

启用指定模块。

$module->enable();

删除指定模块。

$module->delete();

获取指定模块的命名空间。

$module->getNamespace();

自定义命名空间

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

调用 Lang

Lang::get('blog::group.name');
#OR
trans('blog::group.name');

调用 View

View::make('blog::index');
#OR
View::make('blog::partials.sidebar');

调用 Config

Config::get('blog.name');
#OR
config('blog.name');

发布模块

您已经创建了一个 Laravel 模块吗?是的,我创建了。那么,我想发布我的模块。在哪里发布呢?这是一个问题。答案是什么?答案是 Packagist

自动扫描供应商目录

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

// file config/modules.php

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

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

php artisan module:list

发布模块

创建模块后,您确定您的模块将被其他开发者使用。您可以将您的模块推送到 githubbitbucket,然后您可以提交您的模块到 packagist 网站。

您可以通过以下步骤发布您的模块。

  1. 创建一个模块。
  2. 将模块推送到 github。
  3. 将您的模块提交到 packagist 网站。

提交到 packagist 非常简单,只需提供您的 github 仓库,点击提交即可完成。

致谢

关于 XuaNguyen

XuaNguyen 是一位专业的自由网页开发者,专注于 laravel 框架。

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件