Laravel Flash message 为什么只显示1秒?因为多种转跳吗?middleware原因?

Laravel 版本 8.77.1

    public function update(Request $request, $id) {
        $data = User::find($id);
        $data->name = $request->name;
        $data->email = $request->email;
        if (!empty($request->password)) {
            if ($request->password === $request->password_confirmation) {
                $data->password = Hash::make($request->password);
            } else {
                //password != password_confirmation
                return redirect()->route("$this->route_name.edit", $id)->with('danger', 'The two passwords are not match.');
                //return  redirect()->back();
            }
        }
        $data->update();
        return redirect()->route("$this->route_name.index")->with('success', 'Updated successfully.');

    }

以上是一个很简单的 更新用户资料,在做密码确认的时间,如果两次密码不一样就会出现一个错误提示,不管我用了redirect()->route + with() 还是使用以下的都是:只显示1秒就消失

session()->now('danger', 'The two passwords are not match.');
return redirect()->back();

我转跳回去的页面是个 Route::resource 的 edit, 同时加了auth

Route::resource('user', UserController::class)->middleware('auth');

网上有人说是可以 middleware(‘auth’) 的原因,说用其他方法来验证,我直接删除了->middleware('auth')一样的情况

请前辈指导


补充一下:后来想想真的跟什么验证没有关系,我发现甚至把成功更新的

return redirect()->route("$this->route_name.index")->with('success', 'Updated successfully.');
// 由返回列表改为返回edit页面
return redirect()->route("$this->route_name.edit", $id)->with('success', 'Updated successfully.');

一样是只显示1秒就消失,感觉是route多了一层的意思? 但是edit页面只是单纯的显示内容


既然想到是转跳问题,那我去route 找找解决方法,改成这样一样无效

Route::get('user/{id}/edit', 'UserController@edit')->name('user.edit');
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

页面显示跟后端没有任何关系

2年前
讨论数量: 3

页面显示跟后端没有任何关系

2年前

只显示一秒是因为在前端是用toast显示的吧?然后做了只显示一秒toast的逻辑。

2年前

把相关的前端代码也贴上来吧

2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!