gpt4 book ai didi

php - 更新后如何正确转发到另一个 View

转载 作者:搜寻专家 更新时间:2023-10-31 20:57:15 24 4
gpt4 key购买 nike

我的 Web 应用程序中有很多表单。但是,我注意到,一旦我完成了一篇文章并将用户转发到新页面,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...”,用户将转到给定的 View ,这很好,但它允许他们刷新页面并重新提交相同的帖子。

我使用以下代码作为替代测试。

return redirect('/{$wedding->id}/rsvp')
->with(compact('wedding'))
->with(compact('user'))
->with('success', $message);

但是,这似乎并没有通过变量传递(例如“成功”消息)。此外,这依赖于我每次手动输入 URL 以及所有 URL 参数,而只是告诉它使用哪个 View 似乎更清晰。


更新:作为对 Максим Степанов 的回应,我更新了我的路线:

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(...”中的项目没有通过重定向的指导,但我找不到任何人遇到这个问题 - 我假设它与某些东西有关我在做。我只是想不通是什么。

最佳答案

只需使用 route redirect 的助手助手指定你想去的路线名称:

return redirect()->route('your.route.name')->with([...]);

注意:这需要您为路线命名,例如

Route::get('/test', 'SomeController@index')->name('your.route.name');

或者您可以将 URL 直接传递给 redirect

当你自己调用view时,虽然它加载了实际的view,但是相应的 Controller 并没有被触发,因为 Controller 是绑定(bind)到请求的,而不是实际的查看。


with帮助程序创建一个 Flash session 项,因此,您需要在 Blade 中通过 session 访问它助手而不是直接变量:

@if (session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif

关于php - 更新后如何正确转发到另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55464585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com