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');
页面显示跟后端没有任何关系