Laravel 5.7将值传递给控制器​​中的路由

时间:2019-01-30 01:04:41

标签: laravel laravel-5.7

我的控制器发布了一个表单来创建新页面。发布表单后,我需要将用户重定向到新页面,该页面将包含在先前表单中输入的该页面的内容。如果我只返回了view('mynewpageview', compact('mycontent'));,其中mycontent是用于执行$mycontent->save();命令的对象,那么我就有可能有人刷新URL从而通过创建新页面两次发布相同的内容。

相反,我想将用户重定向到实际的页面网址。

我的路线是 Route::get('/newpage/{id}', 'PageController@pagebyid');,如果我使用return redirect()->route('/newpage/$pageid');,其中$pageid = $mycontent->id;会收到“路由未定义”错误。

如何阻止某人重新提交内容或采用正确的语法来传递参数?

2 个答案:

答案 0 :(得分:0)

对我有用的正确答案是-

  1. 在路线文件中为您的路线命名
  2. 然后通过数组将参数传递给控制器​​,如下所示。

return redirect()-> route('newpageid',['id'=> $ pageid]);

答案 1 :(得分:0)

使用基本(未命名)路由,正确的语法为return redirect('/newpage/'.$pageid);

您已经发现可以选择使用named routes

最后但并非最不重要的,感谢您考虑了“两次提交”问题!您实际上已经实现了PRG pattern:)