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');
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

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

3年前
讨论数量: 3

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

3年前

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

3年前

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

3年前