laravelmodules / core
Laravel Modules
Requires
- php: >=5.6.4
- amamarul/integer-hashids: ^1.0
- arcanedev/log-viewer: ~4.0
- arcanedev/no-captcha: ~3.0
- barryvdh/laravel-debugbar: ^2.1
- creativeorange/gravatar: ~1.0
- davejamesmiller/laravel-breadcrumbs: ^3.0
- laravel/framework: 5.4.*
- laravel/socialite: ^3.0
- laravel/tinker: ~1.0
- laravelcollective/html: 5.4.*
- yajra/laravel-datatables-buttons: ^1.1
- yajra/laravel-datatables-oracle: ^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^1.11
- mockery/mockery: ~0.9
- orchestra/testbench: ^3.1|^3.2|^3.3|^3.4
- phpro/grumphp: ^0.9.1
- phpunit/phpunit: ~4
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-boilerplatenwidart/laravel-modulesamamarul/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,则包将扫描其他路径。默认值为falsepaths- 可以由包自动扫描的路径列表。composervendor- Composer供应商名称。author.name- Composer作者名称。author.email- Composer作者电子邮件。缓存enabled- 如果为true,则自动扫描的模块(所有模块)将自动缓存。默认值为falsekey- 缓存名称。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();
自定义命名空间
当你创建一个新的模块时,也会为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。
自动扫描供应商目录
默认情况下,不会自动扫描vendor目录,你需要更新配置文件来允许这样做。将scan.enabled值设置为true。例如
// file config/modules.php return [ //... 'scan' => [ 'enabled' => true ] //... ]
你可以使用module:list命令来验证模块是否已安装
php artisan module:list
发布模块
两种方式
- 控制台方式
- 验证LaravelModules列表中的可用模块 你可以为一个现有的模块做出贡献以进行改进
- 准备GitHub
php artisan module:share <module-name>
推送到GitHub
php artisan module:push <module-name>
你可以按照以下步骤来发布你的模块。
- 创建一个模块。
- 将模块推送到GitHub。
- 将你的模块提交到Packagist网站。提交到Packagist非常简单,只需提供你的GitHub仓库,点击提交就完成了。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。