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
相关产品推荐
相关产品推荐

