企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 万能路由 - 如果报错: Class 'App' not found,可以在引入`App`类 - 这个报错在`lumen`中比较多 - `app()`函数,或者该函数里面的`Container::getInstance()` ~~~ use Illuminate\Support\Facades\App; ~~~ ### 1、路由中只有模型,空值与方法 注意路由`where`定义只有数字字符串的才能被访问 ~~~ Route::group( ['middleware' => ['web']], function() { Route::any( "/{module}/{controller}/{action}", function($module, $class, $action) { // $class 请求的控制器可能是驼峰式的,可以转换下划线生成url,这里也可以将下划线转回驼峰式的控制器 // 这可以定义数组转换驼峰式的数组 $class = "App\\Http\\Controllers\\$module\\".ucfirst(strtolower($class)).'Controller'; if(class_exists($class)){ $ctrl = \App::make($class); return \App::call([$ctrl, $action]); } return abort(404); } )->where(['module' => '[0-9a-zA-Z]+', 'class' => '[0-9a-zA-Z]+', 'action' => '[0-9a-zA-Z_]+']); } ); ~~~ 使用 ~~~ public function index(Request $request) { $name = $request->input('name'); echo $name; } ~~~ ### 2、除了控制器与操作方法还有其他的参数的路由 如:http://www.laravel65.com/Haha/photo/index/id/22/tag/php ~~~ //万能路由 Route::group( ['middleware' => ['web']], function() { Route::any( "/{search}", function($search) { $urls = explode('/', $search); $module = $urls[0] ? $urls[0] : 'Index'; $class = $urls[1] ? $urls[1] : 'Index'; $action = $urls[2] ? $urls[0] : 'Index'; $class = "App\\Http\\Controllers\\$module\\".ucfirst(strtolower($class)).'Controller'; if(class_exists($class)){ $ctrl = \App::make($class); return \App::call([$ctrl, $action], [$search]); } return abort(404); } )->where('search', '.*'); } ); ~~~ 使用 ~~~ public function index(Request $request,$search) { var_dump($search); $name = $request->input('id'); echo 'index' .$name; } ~~~ 万能路由器的简写 ~~~ Route::any('/partner/{class}/{action}', function($class, $action) { $ctrl = \App::make("\\App\\Http\\Controllers\\Partner\\" . $class . "Controller"); return \App::call([$ctrl, $action]); }); ~~~