使用 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文件来实现你想要的,但是在AdminClient之间切换时你必须来回切换。

例如:

要在项目的 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 中创建一个博客模块。

如果您需要在项目的AdminClient 部分之间切换,则需要调整config/modules.php 文件中相同的两行以反映这一点。

还有一个警告:

如果您打算在模块中使用Assets 文件夹,您还需要调整config/modules.php 文件中的相应行,并且您需要手动调整几个明确写入文件路径的方法在您的模块的服务提供商中(例如:Admin/Blog/Providers/BlogServiceProvider.php),并且您需要修复您的 config/view.php - 只需按照 cmets 操作即可。

附:您可能可以创建一个自定义命令来自动在AdminClient 之间切换。

【讨论】:

谢谢,但我已经这样做了,但我想在 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 应用

Dompdf 包在 laravel 中支持其他语言

HDU-2492 pingpong(树状数组)

POJ3928 Pingpong(统计比 K 小的个数 + 树状数组)

使用 jakarta.* 包在 Tomcat 10.x 上部署 Spring 5.x

使用 laravel 后端 api 在 vuejs 中搜索