pingpong / modules
Laravel 模块
Requires
- php: >=5.4.0
- laravel/framework: 5.2.*
- laravelcollective/html: ~5.0
- pingpong/generators: 2.2.*
- pingpong/support: 2.2.*
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4
- dev-master
- 2.2.x-dev
- v2.2.0
- 2.1.x-dev
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.0
- 2.0.x-dev
- 2.0.21
- 2.0.18
- 2.0.17
- 2.0.14
- 2.0.13
- 2.0.12
- 2.0.11
- 2.0.10
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.4
- 2.0.2
- 2.0.0
- 1.2.1
- 1.2.0
- 1.1.11
- 1.1.10
- 1.1.9
- 1.1.8
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.x-dev
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
This package is not auto-updated.
Last update: 2024-09-14 16:24:00 UTC
README
pingpong/modules
是一个用于通过模块管理大型 Laravel 应用的 Laravel 扩展包。模块类似于 Laravel 扩展包,它包含一些视图、控制器或模型。此扩展包在 Laravel 4 和 Laravel 5 中都得到了支持和测试。
升级指南
至 2.0.18
如果您已升级到版本 2.0.18
,请阅读此发行说明。
至 2.0.10
之前,我们从该扩展包添加了两个服务提供者。在版本 2.0.5
中,我们只需要注册一个服务提供者。现在,我们可以从 providers
数组中移除 Pingpong\Modules\Providers\BootstrapServiceProvider
,因为现在该服务提供者是由 Pingpong\Modules\ModulesServiceProvider
自动注册的。
从 Laravel 4 到 Laravel 5
如果您正在使用此扩展包,并且将 Laravel 应用从 Laravel 4 升级到 Laravel 5,您需要做一些事情。您将收到一些关于配置未加载的错误。要修复此问题,请按照以下说明操作。
- 如果您发布了扩展包的配置文件,您需要将配置文件从
app/config/packages/pingpong/modules/config.php
移动到app/config/modules.php
。 - 如果您没有发布扩展包的配置文件,但想发布配置文件,只需运行
php artisan vendor:publish
命令即可。
从 1.1.* 到 1.2.0
新的配置文件。此破坏性更改影响了如果您从扩展包发布配置文件的情况。要修复此问题,在您的 app/config/packages/pingpong/modules/
目录中创建一个名为 config.php
的新配置文件。接下来,将 paths.php
文件中的数组内容移动到新配置文件中的 paths
数组中。您的配置文件将类似于 这个。
安装
通过 composer 安装
{ "require": { "pingpong/modules": "~2.1" } }
然后在您的 composer.json 文件中添加以下内容
然后运行 composer install
来获取包。
快速安装
composer require "pingpong/modules:~2.1"
您也可以使用以下命令简化上述代码
接下来,在 config/app.php
中添加以下服务提供者。
'providers' => array( 'Pingpong\Modules\ModulesServiceProvider', ),
接下来,在同一个文件中的 aliases
数组中添加以下别名。
'aliases' => array(
'Module' => 'Pingpong\Modules\Facades\Module',
),
接下来,通过运行以下命令发布扩展包的配置文件
php artisan vendor:publish
自动加载
默认情况下,控制器、实体或存储库不会自动加载。您可以使用 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
默认情况下,如果您创建一个新模块,它将自动添加一些资源,如控制器、种子类或提供者。如果您不希望这些,您可以使用--plain
标志来生成一个纯模块。
php artisan module:make Blog --plain
#OR
php artisan module:make Blog -p
因为我们使用psr-4
来自动加载模块,所以我们强烈建议使用StudlyCase
约定。
laravel-app/
app/
bootstrap/
vendor/
modules/
├── Blog/
├── Assets/
├── Config/
├── Console/
├── Database/
├── Migrations/
├── Seeders/
├── Entities/
├── Http/
├── Controllers/
├── Middleware/
├── Requests/
├── routes.php
├── Providers/
├── BlogServiceProvider.php
├── Resources/
├── lang/
├── views/
├── Repositories/
├── Tests/
├── composer.json
├── module.json
├── start.php
Artisan 命令
创建新模块。
php artisan module:make blog
使用指定的模块。请参阅#26。
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:enable blog
禁用指定的模块。
php artisan module:disable blog
生成新的中间件类。
php artisan module:make-middleware Auth
更新指定模块的依赖项。
php artisan module:update ModuleName
更新所有模块的依赖项。
php artisan module:update
显示模块列表。
php artisan module:list
门面
获取所有模块。
Module::all();
获取所有缓存的模块。
Module::getCached()
获取有序模块。模块将按module.json
文件中的priority
键排序。
Module::getOrdered();
获取已扫描的模块。
Module::scan();
查找特定模块。
Module::find('name'); // OR Module::get('name');
查找模块,如果存在,则返回Module
实例,否则抛出Pingpong\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::getAssetPath('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('pingpong-modules/hello');
更新指定模块的依赖项。
Module::update('hello');
模块实体
从特定模块获取实体。
$module = Module::find('blog');
获取模块名称。
$module->getName();
获取小写模块名称。
$module->getLowerName();
获取StudlyCase格式的模块名称。
$module->getStudlyName();
获取模块路径。
$module->getPath();
获取额外路径。
$module->getExtraPath('Assets');
禁用指定的模块。
$module->enable();
启用指定的模块。
$module->disable();
删除指定的模块。
$module->delete();
自定义命名空间
当您创建一个新模块时,它还会为Lang
、View
和Config
注册新的自定义命名空间。例如,如果您创建一个名为blog的新模块,它将为该模块注册新的命名空间/提示blog。然后,您可以使用该命名空间来调用Lang
、View
或Config
。以下是一些用法示例
调用Lang
Lang::get('blog::group.name');
调用视图
View::make('blog::index') View::make('blog::partials.sidebar')
调用配置
Config::get('blog.name')
发布模块
你创建过laravel模块吗?是的,我创建过了。那么,我想发布我的模块。在哪里发布呢?这就是问题。答案是什么?答案是Packagist。在pingpong/modules版本>=1.2.0中,当你生成一个模块时,你会看到一个新文件被生成,名为composer.json
。
自动扫描供应商目录
默认情况下,vendor
目录不会被自动扫描,你需要更新配置文件以允许这样做。将scan.enabled
的值设置为true
。例如
// file config/modules.php return [ //... 'scan' => [ 'enabled' => true ] //... ]
你可以使用module:list
命令来验证模块是否已安装
php artisan module:list
发布模块
在创建模块并确信你的模块将被其他开发者使用后,你可以将你的模块推送到github或bitbucket,然后你可以将你的模块提交到packagist网站。
你可以按照以下步骤发布你的模块。
- 创建模块。
- 将模块推送到github。
- 将你的模块提交到packagist网站。提交到packagist非常简单,只需提供你的github仓库,点击提交,你就完成了。