Laravel 将 url 参数从 Controller 传递到路由

标签 laravel url routes

如何将参数从 Controller 传递到路由。例如,在我的 Controller 中,我想将用户重定向到路线并将 ?userID=xyz 附加到路线。我该怎么做? 所以在我的 Controller 中

public function mymethod(){
  return route('getmydata', ['data'=> 1]);
}

我有一条名为 getmydata 的路线

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

我如何在 Controller 中传递?userID,以便我的路线可以是/data/{data}?userID=xyz

谢谢

编辑仍然不起作用:

我的 Controller :

public function mymethod(){
  $userID = xyz;
  return route('getmydata', ['data'=> 1, 'userID' => $userID]);
}

然后在我的 route :

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

我懂了

"Too few arguments to function App\\Providers\\RouteServiceProvider

我正在传递两个参数并期望两个。我错过了什么?

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

最佳答案

您可以通过以下方式将参数从 Controller 传递到路由:

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

关于Laravel 将 url 参数从 Controller 传递到路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64351160/

相关文章:

php - Laravel 5.8 中卡在/电子邮件/验证上

php - 如何使用 php 框架 laravel 5.1 在 mysql 中正确插入时间值?

php - artisan clear-compiled 返回错误代码 255

Python 从 URL 字符串中解析单词

ios - 展开时意外发现 URL 为 nil

Linux 内核在同一子网数据包上的路由

php - 每行包含 3 列的循环数据

php - 从双重缩短的 URL 获取最终 URL (t.co -> bit.ly -> final)

单个路由的ASP.NET Web API自定义IHttpControllerSelector

routes - GIS/ map 解决方案可轻松访问路线数据