laravel中,怎么把一个请求转发给多个控制器

有个特殊需求,根据配置,把一个请求转发个2个控制器。请问这个需求怎么实现?

现在想请求product-type/all的请求转发给 ProductTypeControllerItemController 处理

路由1

Route::prefix('product-type')->group(function () {
    Route::get('all', [ProductTypeController::class, 'all']);
});

路由2

Route::prefix('item')->group(function () {
    Route::get('all', [ItemController::class, 'all']);
});
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
最佳答案

应该是转发两段业务逻辑,而不是转发两个控制器。可以把业务逻辑封装一下,放在model层或者在app 下自定义 service文件夹,建立自定义类 。由控制器控制怎么去执行。

3年前 评论
91it (楼主) 3年前
讨论数量: 4

既然是个特殊的需求,不能新建一个特殊的控制器,里面执行这两个控制器方法的逻辑吗。当然我也不知道怎么将请求转发到两个控制器方法 :smoking:感觉应该没有这么骚的操作

3年前 评论
91it (楼主) 3年前

file 既然是根据配置变更,那是不是可以将这个动作下沉到 service 层。这个明显是不应该在路由层操作的

3年前 评论
91it (楼主) 3年前
Route::get('product-type/all', function() {
  $c1 = app()->call('ProductTypeController@all') // 控制器1的运行结果
  $c2 = app()->call('ItemController@all');
});

这样应该可以

3年前 评论

应该是转发两段业务逻辑,而不是转发两个控制器。可以把业务逻辑封装一下,放在model层或者在app 下自定义 service文件夹,建立自定义类 。由控制器控制怎么去执行。

3年前 评论
91it (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!