2017-09-16 5 views
0

を使用して表示するために、私はそれがLaravel通過データが何らかの形でセッション

を介してアクセスするためにビュー内

return redirect('whatever')->with('arrayName', $arrayName); 

を使用して(、コントローラからアレイを表示するために、データを渡す)作業得るためにそれを管理しました

@if(!is_null(session('arrayName'))) 
     <div class="alert alert-{{ session('arrayName')['something'] }} alert-dismissable"> 
     // more code goes here   
    @endif 

これはセッションのように見えますが、私は情報の形でデータを渡すためにこのテクニックを使用しています(XY、削除など...)メッセージ配列の名前)、今度は情報がページに表示されているメッセージ/警告を表示する機会を常に得るためには、HTML /ブレードページ内に上記のHTMLがあるため、セッションにまだ格納されているため、このメッセージは表示されません。したがって、古いメッセージが表示されるだけでなく、アプリケーション内の完全に別のポイントで使用されたメッセージでもあります。

session()コールがフォルトかどうか、またはセッションをフラッシュする必要があるかどうか(もしそうなら、いつ、いつ?)、またはコントローラとビューの間の通信について何かを混乱させたかどうかは、 (同様にhere)、session()ではなく、ビュー内でアクセスするときに唯一の変数名を使用しています。これは、古いLaravelバージョン(私は最新のものを使用しています)に関連しているのでしょうか?

ご意見ありがとうございます。

+0

$ request-> session() - > flash( 'arrayName'、 'Task was successful!');を使用してください。 ... – Serge

+0

@Sergeこれは、私が先に使った 'redirect() - > with()'関数に沿ってどうやって動きますか?これについて詳しく教えてください。 – John

答えて

0

問題が発生しているデータは、セッションに手動で保存したデータがsession()->put('key', 'value)またはsession(['key' => 'value'])であると推測しています。セッションにデータがput()になると、セッションが期限切れになるか、手動で忘れられるまでそのデータはそこにとどまります。

ただし、1つのレスポンスでデータを固定し、すぐにそれを削除する場合は、flash()メソッドを使用できます。これがredirect()->with()の機能の仕組みです。 with()で指定したデータは、セッションに「フラッシュ」されるため、1つの応答にしか持続しません。

だから、それが唯一の応答のために必要とされるときに、セッションに「フラッシュ」データにコードを変更するか、またはあなたがそれを表示した後に手動でデータをforget()するブレード・テンプレートを更新する必要があります。

@if(!is_null(session('arrayName'))) 
    <div class="alert alert-{{ session('arrayName')['something'] }} alert-dismissable"> 

    // more code goes here 

    @php 
     session()->forget('arrayName') 
    @endphp 
@endif 
+0

あなたの返事をありがとう。私はポストで述べたように、 'session() - > put'を使ったのですが、' redirect() - > with() 'しか使わなかったので、私はとても心配しました。他のいくつかの点は、それはちょうど "メッセージのように(それに属していない間に)"正常にXYを追加しました。 – John

関連する問題