刷新后显示的Laravel flash消息

use*_*183 3 php flash-message twitter-bootstrap laravel laravel-5

我有一个问题.我正在使用Laravel构建一个应用程序,在我上传图片的页面上,我需要一条闪存成功消息,说明您已成功上传新图片.当我上传,它工作,显示Flash消息,但当我刷新,或我转到其他页面时,消息仍然保留在那里.然后在另一次刷新后它消失了.在其他页面上,例如创建新帖子,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()) );

}
Run Code Online (Sandbox Code Playgroud)

lag*_*box 12

您不应该在执行此操作后返回视图.您应该返回一个重定向到GET路由,在那里您将显示该视图(view - pages.profile).这是POST重定向GET流程.

闪烁数据仅在NEXT请求中可用.您正在显示视图的同一请求中闪烁.这就是刷新然后显示flash消息的原因,因为刷新导致新请求,这是下一个请求.

你真的不应该有一个方法来进行表单处理和显示视图,因为它会引起混乱.

有一个方法可以执行重定向到显示视图的路径的处理.您可以同时闪烁和重定向.

return redirect()->route(...)->with('success', ....);
Run Code Online (Sandbox Code Playgroud)