如何在Laravel Jetstream注册成功后显示toastr消息提示
Laravel 8 + Jetstream 注册成功触发toastr提示解决方案
1. 修改RegisteredUserController存储闪存消息
无需改动原有注册、登录逻辑,仅需在返回响应前向session写入一次性闪存消息即可,修改后的store方法代码如下:
public function store(Request $request, CreatesNewUsers $creator): RegisterResponse { event(new Registered($user = $creator->create($request->all()))); $this->guard->login($user); // 新增闪存成功提示 session()->flash('success', '注册成功,欢迎使用!'); return app(RegisterResponse::class); }
2. 前端适配触发toastr
根据你使用的Jetstream栈类型做对应配置即可:
情况1:Blade/Livewire栈
首先确保你已经在全局布局模板(默认路径为resources/views/layouts/app.blade.php)中正确引入了toastr的css、js依赖(注意toastr依赖jQuery,需要先引入jQuery),之后在模板底部加入如下代码:
@if(session()->has('success')) <script> toastr.success("{{ session('success') }}"); </script> @endif {{-- 可按需追加错误提示的判断逻辑 --}} @if(session()->has('error')) <script> toastr.error("{{ session('error') }}"); </script> @endif
情况2:Inertia栈
首先需要在Inertia请求中间件中共享闪存消息到前端,修改app/Http/Middleware/HandleInertiaRequests.php的share方法:
public function share(Request $request) { return array_merge(parent::share($request), [ 'flash' => [ 'success' => session('success'), 'error' => session('error'), ] ]); }
之后在全局布局的Vue/React组件中监听flash属性的变化,当存在success值时调用toastr.success()触发提示即可。
常见不生效排查
- 确认toastr依赖引入顺序正确:先引入jQuery,再引入toastr的css文件,最后引入toastr的js文件
- 确认session配置正常,没有使用不支持闪存的驱动(如array驱动仅测试环境可用)
内容的提问来源于stack exchange,提问作者Arturs
相关产品推荐
相关产品推荐

