You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 9.x注册后返回成功视图时Session消息未传递问题

问题根源

Laravel中view()返回视图时调用with()传递的参数是视图层专属变量,不会自动写入Session存储,因此你在视图中通过Session::has('message')判断时无法命中条件,对应内容自然不会渲染。

这里有个容易混淆的规则:只有调用redirect()重定向后链式调用with(),参数才会自动以闪存形式存入Session,直接返回视图的with()不会触发Session写入。

可选修复方案

二选一即可,不要同时混用。

  • 方案1:适配现有控制器逻辑,修改视图读取方式
    不需要调整控制器代码,直接把视图中读取Session的逻辑改成读取普通视图变量即可,修改对应代码块为:
    @if (isset($message))
    <section class="popup">
        <div class="popup-inner">
            <div class="popup-content">
                <div class="img">
                    <img src="assets/img/popup/popup.jpg" alt="Image">
                </div>
                <div class="content text-center">
                    <p class="">{{ $message }}</p>
                    <h6 class="heading">REGISTRATION SUCCESSFUL!</h6>
                    <a href="{{ route('login') }}" class="button color-2 login-submit">LOGIN TO YOUR ACCOUNT</a>
                </div>
            </div>
        </div>
    </section>
    @endif
    
  • 方案2:保留现有视图逻辑,修改控制器传参方式
    如果你希望统一用Session闪存的方式传递提示消息(方便后续重定向场景复用逻辑),就调整控制器的registered方法,先手动把消息闪存到Session,再返回视图:
    protected function registered(Request $request, $user)
    {
        session()->flash('message', 'Your registration was successful. Click the button below to login to your account');
        return view('frontend.pages.register-success');
    }
    

内容的提问来源于stack exchange,提问作者Morri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 16:24:34