【问题标题】:Laravel: How do I pass data with redirect that can be used by the controller the GET request triggers?Laravel:如何通过 GET 请求触发的控制器使用重定向传递数据?
【发布时间】:2018-05-07 05:15:22
【问题描述】:

我有一个网页,其控制器生成一个唯一代码。因此,在每个页面刷新时都会创建一个新代码,这是不行的。

我的解决方案是使用两种控制器方法

方法 #1 创建唯一代码,然后重定向触发第二个控制器方法。这种方式在页面刷新时会重新触发 #2 控制器而不是 #1。

方法 #1 将代码输入数据库,方法 #2 将其拉出并显示。

为了使其正常工作,我需要将 DB id 传递给使用“重定向”触发的新控制器方法。

问题:如何通过 GET 请求触发的控制器使用重定向传递数据?


当前代码尝试

控制器方法#1返回

//make unique code
//enter into db
return redirect("/confirmed/{$model->id}");

控制器方法#2

public function confirmed($id) {
    $shipments = shipments::where('id',$id)->orderBy('id', 'desc')->first(); 
    return view('confirmed', compact('shipments') );
}

确认路线

Route::get('/confirmed/{$id}', 'ShipmentsController@confirmed');

【问题讨论】:

  • 如果代码保存在数据库中,是否应该再次创建?
  • 也许你应该改用 session。

标签: laravel redirect


【解决方案1】:

您可以在重定向时使用会话,

return redirect("/confirmed/{$model->id}")->with('unique_code', $uniqueCode);

注意$uniqueCode 是您生成的代码。

然后在其他控制器中你可以通过session('unique_code')检索它

public function confirmed($id) {
    $uniqueCode = session('unique_code'); 
    $shipments = shipments::where('id',$id)->orderBy('id', 'desc')->first(); 
    return view('confirmed', compact('shipments') );
}

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2018-12-22
    • 1970-01-01
    • 2021-04-13
    • 2018-10-07
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2017-12-27
    • 2018-06-24
    相关资源
    最近更新 更多