You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel nWidart/laravel-modules模块迁移至子目录的方法咨询

解决Laravel Modules多子目录模块加载问题

1. 注册多模块路径

在app/Providers/AppServiceProvider.php的boot方法中,手动添加额外模块目录的加载逻辑:

use Nwidart\Modules\Facades\Module;

public function boot()
{
    Module::addLocation(base_path('Modules/Core'));
    Module::addLocation(base_path('Modules/External'));
}

该方法会在默认模块路径之外,额外加载指定目录下的模块。

2. 修正模块命名空间与自动加载

每个迁移后的模块必须更新自身的composer.json,调整PSR-4命名空间映射,确保与新目录结构一致:

  • 对于Modules/Core/Customers,修改composer.json:
{
    "name": "modules/core/customers",
    "autoload": {
        "psr-4": {
            "Modules\\Core\\Customers\\": ""
        }
    }
}
  • 对于Modules/External/Taller,修改composer.json:
{
    "name": "modules/external/taller",
    "autoload": {
        "psr-4": {
            "Modules\\External\\Taller\\": ""
        }
    }
}

执行命令更新自动加载规则:

composer dump-autoload

3. 调整模块配置

确保每个模块的module.json中name字段与目录结构匹配,比如Customers模块的module.json:

{
    "name": "core/customers",
    "alias": "customers",
    // 保留原有其他配置项
}

验证配置

运行以下命令查看已加载的模块,确认Core和External下的模块都被正确识别:

php artisan module:list

内容的提问来源于stack exchange,提问作者Carlos Crespo Moreno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 13:55:28