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

Laravel Breeze+Inertia+Vue3闪存消息正常实现方法

问题原因

该异常是Inertia-Laravel默认闪存共享逻辑与自定义共享逻辑执行顺序冲突导致:

  • 调用redirect()->with('success', 'xxx')传递闪存数据时,Inertia默认配置会自动将所有顶层会话闪存键挂载为根级props,也就是你观察到的page.props.success字段
  • 你在HandleInertiaRequests中用闭包定义flash属性属于懒加载属性,闭包执行时默认逻辑已经将闪存数据从session中消费清空,因此flash.success始终读取到null
修复方案

1. 关闭默认顶层闪存共享

打开config/inertia.php配置文件,注释掉默认的闪存共享配置,阻止框架自动将顶层闪存挂到根props:

// config/inertia.php
return [
    // 其余配置保持不变
    'share' => [
        // 注释默认闪存共享项
        // 'flash' => Inertia\SharedProp::flash(),
        // errors等其他默认共享项可保留
        'errors' => Inertia\SharedProp::errors(),
    ],
];

2. 校验中间件执行顺序

打开app/Http/Kernel.php,确认web中间件组中StartSession中间件排在HandleInertiaRequests前面,保证读取session时闪存数据已正常加载:

protected $middlewareGroups = [
    'web' => [
        // 其他前置中间件
        \Illuminate\Session\Middleware\StartSession::class,
        // 其他中间件
        \App\Http\Middleware\HandleInertiaRequests::class,
        // 其他后置中间件
    ],
];

3. 清除配置缓存生效

执行artisan命令清除配置缓存,让修改生效:

php artisan config:clear

修复完成后再次触发提交跳转,即可在page.props.flash路径下正常读取到success、error闪存值,根props下不会再出现冗余的顶层闪存字段,全页重载、Inertia异步跳转两种场景下闪存逻辑都可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 10:27:07