Loading... # [laravel万能路由( 自动路由、动态路由)实现方法分享](https://blog.p2hp.com/archives/7504) 有了万能路由就不用一条一条添加路由了,很方便。如果你要用资源控制器做Restful接口,那还是要写资源路由的,注意,资源路由一定要写在最上面。 Route::resource('photos', 'PhotoController');//资源路由要写在上面。 //万能路由 Route::group(['middleware'=>['web']],function (){ Route::any("/{module}/{controller}/{action}",function ($module,$class,$action){ $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]+']); }); 在你的控制器方法中获取参数要用(Request $request) public function index(Request $request) { $name = $request->input('name'); echo $name; } 友好url:如果你想拥有http://www.laravel65.com/Haha/photo/index/id/22/tag/php 这样的友好url 请使用以下 Route::resource('photos', 'PhotoController');//资源路由要写在上面。 Route::get('/', function () { return view('welcome'); }); //万能路由 Route::group(['middleware'=>['web']],function (){ Route::any("/{search}",function ($search){ $urls=explode('/',$search); $module=$urls[0] ?? 'Index'; $className=$urls[1] ?? 'Index'; $action=$urls[2] ?? 'Index'; $class ="App\\Http\\Controllers\$module\\".ucfirst(strtolower($className)).'Controller'; $ctrl = \App::make($class); return \App::call([$ctrl, $action],[$search]); // } return abort(404); })->where('search', '.*'); }); 同时在你控制器的方法中使用$search参数接收参数 public function index(Request $request,$search) { var_dump($search); $name = $request->input('id'); echo 'index' .$name; } 最后修改:2023 年 08 月 11 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏