php如何转发,php-更新后如何正确转发到另一个视图

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

{{$success}}

@endif

我已经搜索了有关为什么“-> with(…”中的项不能通过重定向进行操作的指南,但是找不到任何有此问题的人-我假设它与某些问题有关我在干嘛,我不知道该怎么办.

解决方法:

只需将route帮助程序与redirect帮助程序一起使用,即可指定要转到的路线名称:

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

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

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

或者您可以直接传递URL进行重定向.

单独调用视图时,尽管它加载了实际视图,但由于该控制器绑定到请求而非实际视图,因此不会触发相应的控制器.

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

@if (session('success'))

{{ session('success') }}

@endif

标签:laravel,php

来源: https://codeday.me/bug/20191211/2105374.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值