使用 pingpong 包在 laravel 5.1 中创建子模块文件夹
Posted
技术标签:
【中文标题】使用 pingpong 包在 laravel 5.1 中创建子模块文件夹【英文标题】:Create sub Module folders in laravel 5.1 using pingpong package 【发布时间】:2015-12-26 21:48:12 【问题描述】:我正在使用pingpong 包在laravel 5.1 中开发模块化项目。这给了我如下的项目结构
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
我想在“admin”和“client”中分离这个模块文件夹,以区分我的客户端和管理端,如下所示,
laravel-app/
app/
bootstrap/
vendor/
modules/
├── Admin/
├── 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
├── Client/
├── 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
请帮我解决这个问题, 谢谢。
【问题讨论】:
有什么更新吗? 【参考方案1】:更新:
你可以通过调整config/modules.php
文件来实现你想要的,但是在Admin
和Client
之间切换时你必须来回切换。
例如:
要在项目的 Admin
部分中生成 (module:make
) 或使用 (module:use
) 模块,您需要执行以下操作:
在config/modules.php
文件中,将namespace
调整为
/*
|--------------------------------------------------------------------------
| Module Namespace
|--------------------------------------------------------------------------
|
| Default module namespace.
|
*/
'namespace' => 'Modules\Admin',
在同一个文件中,将base_path
调整为
/*
|--------------------------------------------------------------------------
| Modules path
|--------------------------------------------------------------------------
|
| This path used for save the generated module. This path also will added
| automatically to list of scanned folders.
|
*/
'modules' => base_path('modules/admin'),
这就是您需要做的所有事情,调用php artisan module:make blog
将在modules/admin
中创建一个博客模块。
如果您需要在项目的Admin
和Client
部分之间切换,则需要调整config/modules.php
文件中相同的两行以反映这一点。
还有一个警告:
如果您打算在模块中使用Assets
文件夹,您还需要调整config/modules.php
文件中的相应行,并且您需要手动调整几个明确写入文件路径的方法在您的模块的服务提供商中(例如:Admin/Blog/Providers/BlogServiceProvider.php
),并且您需要修复您的 config/view.php
- 只需按照 cmets 操作即可。
附:您可能可以创建一个自定义命令来自动在Admin
和Client
之间切换。
【讨论】:
谢谢,但我已经这样做了,但我想在 admin 和 client 文件夹中创建多个模块。 我尝试做“php artisan module:make Admin/blog”和“php artisan module:make Client/blog”并得到了想要的结构,现在我正在为这个结构设置路由. 是的,如果你这样做了,文件夹结构就被创建了,但是你必须进去手动编辑一堆东西。另外,当您这样做时,您是否收到“管理员/博客”不存在或类似的错误?我收到了那个错误,它仍然创建了大部分文件夹结构,但有些文件丢失了。如果你尝试 module:list 模块没有列出 谢谢,但我想同时运行这两个文件夹。 虽然你不能同时使用两者。您需要调用 module:use 在不同模块之间切换,这只是在切换过程中增加了一个步骤(就像我说的那样,您可以自动化该过程以使其更容易以上是关于使用 pingpong 包在 laravel 5.1 中创建子模块文件夹的主要内容,如果未能解决你的问题,请参考以下文章
使用 Laravel-Modules 扩展包通过模块化开发大型 Laravel 应用
POJ3928 Pingpong(统计比 K 小的个数 + 树状数组)