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

标签 php laravel

我的 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/

相关文章:

php - 在 codeigniter 中不存在类 : Commonlib is library file

php - 由于 Laravel 中的外键约束而报告错误

mysql - Laravel 5.8,where 子句中带有 Count(*) 的棘手子查询

php - 如何在另一个指令中调用 Laravel Blade 指令?

php - MYSQL JSON - 如何访问由数字键索引的嵌套 JSON 对象?

php - 关于如何将 JS onchange 事件传递给 PHP 的建议

php - Laravel,我需要多个数据库表来对不同模型进行投票吗

php - 找不到 Laravel 5 路由 404

php - 连接三个表

php - 如何将 html 链接传递给 nexmo 短信响应