从控制器到路由的Laravel传递url参数

从控制器到路由的Laravel传递url参数,laravel,url,routes,Laravel,Url,Routes,如何将参数从控制器传递到路由。例如,在我的控制器中,我希望将用户重定向到路由,并将?userID=xyz附加到路由。我怎么做? 所以在我的控制器里 public function mymethod(){ return route('getmydata', ['data'=> 1]); } 我有一个名为getmydata的路由 Route::get('/data/{data}', function (Request $request, $data) { ... })->n

如何将参数从控制器传递到路由。例如,在我的控制器中,我希望将用户重定向到路由,并将?userID=xyz附加到路由。我怎么做? 所以在我的控制器里

public function mymethod(){
  return route('getmydata', ['data'=> 1]);
}
我有一个名为getmydata的路由

Route::get('/data/{data}', function (Request $request, $data) {
    ...
})->name('getmydata');
如何在控制器中传递?userID,以便我的路由可以是/data/{data}?userID=xyz

谢谢

编辑仍不工作:

我的控制器:

public function mymethod(){
  $userID = xyz;
  return route('getmydata', ['data'=> 1, 'userID' => $userID]);
}
然后在我的路线上:

Route::get('/data/{data}/', function ($data, $userID) {
...
})->name('getmydata');
我要走了

"Too few arguments to function App\\Providers\\RouteServiceProvider
我正在传递两个参数,期望两个。我错过了什么


路由应该是/data/{data}?userID=xyz

您应该在
queryparams
上传递它,并通过
$request
对象检索它们

Route::get('/data/{data}',函数(Request$Request$data){
$userID=$request->userID;//或$request->get('userID'))
})->名称('getmydata');

您可以通过以下方式将参数从控制器传递到路由

return redirect()->route('getmydata', ['data'=> 1]);
// 127.0.0.1:8000/data/1
使用
GET
参数:

return redirect()->route('getmydata', ['data' => 1]);
// 127.0.0.1:8000/data?data=1
已更新:如果您想要这样的URL
http://127.0.0.1:8000/data/{data}?userID=xyz
,然后可以通过向路由传递额外参数来完成此操作:

Route::get('/data/{data}', function (Request $request, $data) { ... })->name('getmydata');

return redirect()->route('getmydata', ['data'=> 1, 'userID' => 'xyz']);
// 127.0.0.1:8000/data/1?userID=xyz