2016-06-13 101 views
3

我有一個問題。我正在使用Laravel構建一個應用程序,並在頁面上傳圖片,我需要一個成功上傳新圖片的成功消息。當我上傳時,它可以工作,顯示Flash消息,但是當我刷新時,或者我去其他頁面時,消息仍然停留在那裏。然後再刷新它消失。在其他頁面上,例如創建新帖子,閃光信息正常工作,不會在刷新或轉到其他頁面後顯示。我正在使用imageintervention.io api來上傳圖片,我提到它是因爲我不想讓您與代碼混淆。刷新後顯示Laravel閃存消息

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())); 

} 

回答

8

在你這樣做的行爲後,你不應該返回視圖。您應該將重定向返回到GET路線,您將顯示該視圖(view - pages.profile)。這是POST重定向GET流程。

閃存數據僅在下一個請求中可用。您在顯示視圖的同一請求中閃爍。這就是刷新然後顯示閃存消息的原因,因爲刷新正在導致新的請求,這是下一個請求。

你真的不應該有一個單一的方法做表單處理和顯示的意見,因爲它會導致混亂的道路。

有一種方法可以處理重定向到顯示視圖的路徑。您可以同時閃爍和重定向。

return redirect()->route(...)->with('success', ....); 
+0

謝謝,我將在未來考慮。 :) – user6106183