【发布时间】:2018-04-07 23:13:18
【问题描述】:
我有很多模块,我的源代码在 App\Http\Controllers 内的子文件夹中组织,例如 App\Http\Controllers\ModuleOne。
基本控制器位于App\Http\Controllers 中,模块控制器扩展了这些基本控制器。如果我不想在使用特定模块时自定义基本控制器,则模块控制器可能不存在。
我想编写一个逻辑来检查模块控制器是否存在。如果路由不存在,它应该将操作路由到BaseController。
我尝试过制作中间件和其他解决方案,但似乎无法完成。
我想让所有控制器内部的路由使用相同的名称(因此忽略模块名称 - 将由 env 变量定义)。所以,为了简化我想调用的代码:
Route::get('apple','AppleController@view')
从这条路线它应该检查是否:
App\Http\Controller\module1\module1_AppleController.php
存在。
如果有,请使用它。如果不是,它应该路由到基本控制器操作,即App\Http\Controller\AppleController。
似乎无法弄清楚在哪里使用高效的代码来执行此操作。可以在RouteServiceProvider在中间件或其他中进行重写吗?
另外,如果更新版本的 Laravel 可以提供 5.1 中没有的解决方案,我愿意升级,所以不要将答案限制在 5.1。
【问题讨论】:
标签: laravel laravel-5 laravel-5.1 laravel-routing