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', ....);