Laravel 8:路由重定向时保留URL参数的实现问题
解决Laravel重定向时保留URL参数的问题
问题根源
你碰到的Call to undefined method Illuminate\Support\Facades\Request::query()错误,是因为代码里的Request $request没有正确导入Illuminate\Http\Request类,Laravel自动解析成了Illuminate\Support\Facades\Request门面类,而这个门面并没有query()方法。
修复方案
方案1:导入正确的Request类
在你的路由文件顶部添加正确的类导入:
use Illuminate\Http\Request;
之后原代码就能正常工作:
Route::get('/login', function (Request $request) { return redirect()->route('doug-test', ['url'=> $request->query('url')]); })->middleware('not-auth')->name('login');
方案2:使用request()辅助函数(更简洁)
直接用Laravel提供的全局辅助函数request(),不需要依赖注入,代码更清爽:
Route::get('/login', function () { return redirect()->route('doug-test', ['url' => request('url')]); })->middleware('not-auth')->name('login');
额外技巧:传递所有查询参数
如果需要保留原请求的所有查询参数,不用单独指定url,直接传递全部查询数组即可:
Route::get('/login', function () { return redirect()->route('doug-test', request()->query()); })->middleware('not-auth')->name('login');
验证效果
访问/login?url=/xyz时,会自动重定向到/dougs-page?url=/xyz(对应路由doug-test),参数完全保留。
内容的提问来源于stack exchange,提问作者asdflkadslkfadsfjasdadsfsad
相关产品推荐
相关产品推荐

