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

时间:2018-05-07 05:15:23

标签: laravel redirect

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

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

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

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

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

问题:如何通过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');

1 个答案:

答案 0 :(得分:0)

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

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') );
}

我希望这会对你有所帮助。