cvepdb / laravel-modules
Requires
- php: >=5.5.9
- cvepdb/laravel-generators: 2.3.*
- cvepdb/laravel-support: 2.3.*
- laravelcollective/html: ~5.0
Requires (Dev)
- laravel/framework: 5.3.*
- phpunit/phpunit: 4.6.*
- dev-master
- 2.3.1
- 2.3.0
- v2.2.0
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.0
- 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.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: 2017-03-15 16:18:17 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 安装,只需在您的 composer.json 文件中添加以下内容
{ "require": { "pingpong/modules": "~2.1" } }
然后运行 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
View::make('blog::index') View::make('blog::partials.sidebar')
调用 Config
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 仓库,点击提交,就完成了。