2016-06-13 18 views
3

問題が1つあります。私はLaravelで1つのアプリケーションを構築しています。写真をアップロードするページに、新しい画像をアップロードしたというフラッシュ成功メッセージが必要です。アップロードすると、それは動作し、フラッシュメッセージが表示されますが、リフレッシュするか、別のページに移動すると、メッセージはまだそこに残ります。そしてもう一度リフレッシュした後、それは消える。新しい投稿を作成するような他のページでは、フラッシュメッセージは、リフレッシュ後に表示されたり、別のページに行くことなく、正常に動作します。私は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フローです。

フラッシュされたデータは、NEXTリクエストでのみ利用できます。ビューを表示している同じ要求で点滅しています。リフレッシュによって次のリクエストである新しいリクエストが発生するため、リフレッシュでフラッシュメッセージが表示されます。

道路の混乱の原因となるため、フォーム処理とビューの表示を行う方法は1つしかありません。

ビューを表示するルートにリダイレクトする処理を行う方法があります。同時にフラッシュしてリダイレクトすることもできます。

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

ありがとうございます、今後これを検討していきます。 :) – user6106183

関連する問題