我在我的网站应用程序中有很多表单。然而,我注意到一旦我完成了提交并将用户转到新页面后,URL 仍然是更新前的 URL。因此,如果用户刷新页面,它会重新提交请求。
以下是我处理转发的方式。
以下是我处理转发的方式。
public function update(Request $request, Wedding $wedding, User $user)
{
$user->attending = ($request->attending != null);
$user->save();
$message = "Sorry to hear you won't make it!";
if ($user->attending) {
$message = 'Welcome to the party pal!';
}
return view('pages.guest.rsvp')
->with(compact('wedding'))
->with(compact('user'))
->with('success', $message);
}
"return view..."执行后,用户会被重定向到指定的视图,这很好,但这也允许他们刷新页面并重新提交相同的帖子。
我已经使用以下代码作为一种替代测试方法。
return redirect('/{$wedding->id}/rsvp')
->with(compact('wedding'))
->with(compact('user'))
->with('success', $message);
然而,这似乎无法传递变量(例如“成功”消息)。此外,这需要我每次手动键入包含所有URL参数的URL,而只需告诉它使用哪个视图似乎更清晰。
更新:针对Максим Степанов的回应,我已经更新了我的路由:
Route::get('rsvp', 'Guest\MenuController@index')->name('rsvp');
虽然之前的方法可行(感谢您),但现在我正在这样重定向:
return redirect()
->route('rsvp', ['wedding' => $wedding])
->with('success', $message);
虽然重定向功能可用,但成功消息似乎不起作用。通过以下方式捕获消息:
@if (isset($success))
<div class="alert alert-success">
{{$success}}
</div>
@endif
我搜索了关于为什么在“->with(...”中的项目没有通过重定向的指导,但我找不到任何人遇到这个问题 - 我认为这是我做的某些事情。我只是想不出是什么。