Laravel 5带消息重定向

5
有人能够解释为什么当以下代码重定向到另一个页面时会失效吗?
return redirect()->route('homepage')->with('message', 'I am so frustrated.');

重定向按预期工作,但消息未显示。
视图如下:
@if ( session()->has('message') )
    <div class="alert alert-success alert-dismissable">{{ session()->get('message') }}</div>
@endif

当我将它更改为:
return redirect()->route('contact')->with('message', 'I am so frustrated.');

使用redirect()->back(),它与<strong>redirect() ->back()</strong>是同义的,所有内容都能正常工作并显示消息。那么redirect back()to()另一个视图有什么区别呢?


1
这是我之前使用的代码:return redirect()->to('/')->with('message', '感谢您与我们联系!') - manshu
我已经尝试了所有的方法:Redirect::to(),redirect()->to(),redirect()->route('homepage')。 - Čamo
将以下内容放入控制器:redirect('/contact')->with('message', '我很沮丧。') 然后在视图中使用 {{ Session::get('message') }}。 - kamlesh.bar
2个回答

6
如果您使用的是Laravel 5.2,请确保所有访问会话数据的路由都包含在“web”中间件组中。如果您的“contact”路由位于“web”中间件组内,但您的“homepage”路由不在其中,则可以解释您的问题。

是的,这很可能是原因。我还没有测试过。非常感谢! - Čamo

1

我目前使用的是 Laravel 5.7 HTTP 重定向,这段代码在控制器中对我有效:

public function register(Request $request)
{
    $this->validator($request->all())->validate();
    event(new Registered($user = $this->create($request->all())));

    return $this->registered($request, $user) ?: 
    redirect($this->redirectPath())->with('success', 
    'An activation link was send to your email address.');
}

在视图文件(etc.blade.php)中,我这样做:
@if(session('success'))
     <span class="alert alert-success" role="alert">
         <strong>{{ session('success') }}</strong>
     </span>
@endif

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接