Laravel 刷新后显示的闪现消息
Laravel flash message showing after refresh
我有一个问题。我正在使用 Laravel 构建一个应用程序,在我上传图片的页面上,我需要一条快速成功消息,表明您已成功上传新图片。当我上传时,它可以工作,显示闪现消息,但是当我刷新或转到其他页面时,该消息仍然存在。然后在另一次刷新后它消失了。在创建新 post 等其他页面上,Flash 消息正常工作,不会在刷新后显示或转到另一个页面。我正在使用 imageintervention.io api 上传图片,我提到它是因为我不想让你对代码感到困惑。
public function update_avatar(Request $request)
{
// Handle the upload of avatar
if ($request->hasFile('avatar'))
{
$avatar = $request->file('avatar');
$filename = time() . '.' . $avatar->getClientOriginalExtension();
Image::make($avatar)->resize(300, 300)->save( public_path('/uploads/avatars/' . $filename ) );
$user = Auth::user();
$user->avatar = $filename;
$user->save();
Session::flash('success', 'You have successfully uploaded new picture!');
}
return view('pages.profile', array('user' => Auth::user()) );
}
您不应该在执行了这样的操作后返回视图。您应该将重定向返回到 GET 路由,您将在其中显示该视图(视图 - pages.profile)。这是 POST 重定向 GET 流程。
闪存数据仅在 NEXT 请求时可用。您在显示视图的同一请求中闪烁。这就是刷新然后显示闪现消息的原因,因为刷新导致了新请求,即下一个请求。
您真的不应该使用一种方法来处理表单和显示视图,因为这会导致混淆。
有一个方法可以执行重定向到显示您的视图的路由的处理。您可以同时闪现和重定向。
return redirect()->route(...)->with('success', ....);
我有一个问题。我正在使用 Laravel 构建一个应用程序,在我上传图片的页面上,我需要一条快速成功消息,表明您已成功上传新图片。当我上传时,它可以工作,显示闪现消息,但是当我刷新或转到其他页面时,该消息仍然存在。然后在另一次刷新后它消失了。在创建新 post 等其他页面上,Flash 消息正常工作,不会在刷新后显示或转到另一个页面。我正在使用 imageintervention.io api 上传图片,我提到它是因为我不想让你对代码感到困惑。
public function update_avatar(Request $request)
{
// Handle the upload of avatar
if ($request->hasFile('avatar'))
{
$avatar = $request->file('avatar');
$filename = time() . '.' . $avatar->getClientOriginalExtension();
Image::make($avatar)->resize(300, 300)->save( public_path('/uploads/avatars/' . $filename ) );
$user = Auth::user();
$user->avatar = $filename;
$user->save();
Session::flash('success', 'You have successfully uploaded new picture!');
}
return view('pages.profile', array('user' => Auth::user()) );
}
您不应该在执行了这样的操作后返回视图。您应该将重定向返回到 GET 路由,您将在其中显示该视图(视图 - pages.profile)。这是 POST 重定向 GET 流程。
闪存数据仅在 NEXT 请求时可用。您在显示视图的同一请求中闪烁。这就是刷新然后显示闪现消息的原因,因为刷新导致了新请求,即下一个请求。
您真的不应该使用一种方法来处理表单和显示视图,因为这会导致混淆。
有一个方法可以执行重定向到显示您的视图的路由的处理。您可以同时闪现和重定向。
return redirect()->route(...)->with('success', ....);