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');
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

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

2年前
讨论数量: 3

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

2年前

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

2年前

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

2年前

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