nWidart/laravel-modules,如何将模块放在不同的文件夹下

9cbw7uwe  于 2023-02-05  发布在  其他
关注(0)|答案(2)|浏览(163)

我是Laravel的新手。我想在不同的文件夹中编写模块,而不是所有模块都在同一个文件夹"模块"中。例如:

myProyect
 |___ Clients
 |       |__ Module1
 |       |__ Module2
 |
 |___ Factory
         |__ Part1
         |_____Module1
         |____ Module2
         |__ Part2
         |____ Module1

这可能吗?我正在尝试,但我只得到错误。(我开始与客户端,因为没有像工厂不同的子文件夹)我这样做:使用nWidart步骤创建一个模块化结构。它创建了"模块"中的所有内容。我做了新的dir客户端并将第二个模块移动到新文件夹中,添加composer.json:"自动加载":{" psr-4 ":{"应用程序":"app/","模块":"模块/","客户端":"Clients/"},然后在config/app.php上,我写道:客户端\模块1\提供程序\模块1服务提供程序::类,
当我写道:编写器转储-自动加载,出现此错误:未找到类"客户端\模块1\提供程序\模块1服务提供程序
谢谢你的帮助。

umuewwlo

umuewwlo1#

您可以在Modules目录下的子文件夹中设置不同的模块,您必须在module.php中设置config:

'scan' => [
    'enabled' => false,
    'paths' => [
        base_path('vendor/*/*'),
    ],
],

按如下方式更改路径:

'scan' => [
    'enabled' => false,
    'paths' => [
        base_path('Modules/Clients/*'),
        base_path('Modules/Factory/*'),
    ],
],

然后更改其他路径配置:

'modules' => base_path('Modules/Clients'),
'assets' => public_path('modules/Clients'),

和命名空间:

'namespace' => 'Modules\Clients',

现在,如果您运行客户端目录中的php artisan module:make Test测试模块集。
您可以在控制器中设置模块、资源、命名空间配置路径:

\Config::set('modules.paths.modules',base_path('Modules/Clients'));
    \Config::set('modules.paths.assets',base_path('modules/Clients'));
    \Config::set('modules.namespace','Modules\Clients');

检查composer.json,将自动加载添加到其中:

"autoload": {
"psr-4": {
  "App\\": "app/",
  "Modules\\": "Modules/"
   }
}

然后运行composer dump-autoload

oyt4ldly

oyt4ldly2#

我有类似的东西。
我需要在多个项目中使用同一个模块。
在下面的示例中,"模块1"同时用于项目1、项目2和项目3。我的体量结构将接近于:

PROJECTS
 |___ Project1
 |___ Project2
 |___ Project3
 |___ Module1

我希望保持这种结构,因为它符合公司的标准。
我在modules.php中尝试了一些更改,但没有成功:

'namespace' => '',
    'paths' => [
        'modules' => base_path('../..')
    ]

我得到了以下回报:
PS C:\1.php\PROJECTS\PROJECT〉php工匠模块:列表

Error 

  Class '\Teste\Providers\TesteServiceProvider' not found

  at C:\1.PHP\GLOBAL\vendor\laravel\framework\src\Illuminate\Foundation\ProviderRepository.php:208
    204▕      * @return \Illuminate\Support\ServiceProvider
    205▕      */
    206▕     public function createProvider($provider)
    207▕     {
  ➜ 208▕         return new $provider($this->app);
    209▕     }
    210▕ }
    211▕

  1   C:\1.PHP\GLOBAL\vendor\laravel\framework\src\Illuminate\Foundation\ProviderRepository.php:144
      Illuminate\Foundation\ProviderRepository::createProvider("\Teste\Providers\TesteServiceProvider")

  2   C:\1.PHP\GLOBAL\vendor\laravel\framework\src\Illuminate\Foundation\ProviderRepository.php:61
      Illuminate\Foundation\ProviderRepository::compileManifest()

相关问题