Laravel将URL参数从控制器传递到路由 [英] Laravel pass url parameter from controller to route
问题描述
如何将参数从控制器传递到路由.例如,在我的控制器中,我想将用户重定向到路由,还要将?userID = xyz附加到路由.我该怎么做?所以在我的控制器中
How can you pass a parameter from controller to route. For example, in my controller i want to redirect the user to a route and also attach ?userID=xyz to the route. How can I do it? So in my controller
public function mymethod(){
return route('getmydata', ['data'=> 1]);
}
我有一个名为getmydata的路由
I have a route named getmydata
Route::get('/data/{data}', function (Request $request, $data) {
...
})->name('getmydata');
我如何在控制器中传递?userID,以便我的路由可以是/data/{data}?userID = xyz
How would i pass ?userID in my controller so my route can be /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
我传递了两个参数,并期望有两个.我想念什么?
I'm passing two parameters and expecting two. What am i missing?
路由应为/data/{data}?userID = xyz
the route should be /data/{data}?userID=xyz
推荐答案
您可以通过以下方式将参数从控制器传递给 route :
You can pass parameter from controller to route in this way :
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
,则可以通过通过路由传递额外的参数:
Updated : If you want URL like this http://127.0.0.1:8000/data/{data}?userID=xyz
, then can do it by passing extra parameter with the route :
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
这篇关于Laravel将URL参数从控制器传递到路由的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!