【问题标题】:Laravel pass url parameter from controller to routeLaravel 将 url 参数从控制器传递到路由
【发布时间】:2021-01-28 17:35:24
【问题描述】:

如何将参数从控制器传递到路由。例如,在我的控制器中,我想将用户重定向到路由,并将 ?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

【问题讨论】:

    标签: laravel url routes


    【解决方案1】:

    您应该将它传递给queryparams 并通过$request 对象检索它们。

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

    【讨论】:

      【解决方案2】:

      您可以通过这种方式将参数从 controller 传递到 route

      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
      

      【讨论】:

        猜你喜欢
        • 2019-06-18
        • 2019-07-10
        • 2017-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-15
        • 2012-09-20
        相关资源
        最近更新 更多