3

これは頭​​痛の種です!Laravelのセッションのフラッシュメソッドについての私の理解から、一度設定してから呼び出すと、破棄されます...

Session::flash( 'key', $data );

どこかで

{{ Session::get( 'key' ) }}

これをフォームの検証に使用しています。フォームが検証されない場合、アプリケーションはエラーを表示しました。フォームを修正して再度投稿すると、データベースが更新され、詳細が正しく表示されますが、エラーが再び表示されます。これは、検証されないフォームを投稿した場合も同じですが、エラーが表示されますが、同じページのナビゲーションリンクをクリックすると、再び表示されます。

誰かこれに出くわしますか?

よろしく

ルーク

4

8 に答える 8

8

この問題は、Controller@updateメソッドでreturn view()/をreturn View::Make実行したときに一度発生しました。return redirect()->route()

于 2015-01-29T18:32:25.137 に答える
5

Laravel 5.1以降、現在のリクエストにのみ影響するnow()メソッドを使用できます。

Session::now('key', 'message');

また

session()->now('key', 'message');
于 2018-04-03T09:19:35.263 に答える
3

Laravelのドキュメントから:

flashメソッドは、次のリクエストの後に期限切れになるアイテムをセッションに保存します。ステータスやエラーメッセージなどの一時データを保存するのに便利です。

つまり、現在および次のリクエストで利用可能です。アクセスしても自動的にフラッシュされません。これを行うには、を使用しますSession::flush('key');

于 2013-01-25T10:37:47.930 に答える
2

セッションフラッシュは、リダイレクト中に使用されることを意図していたため、2つの要求のセッションデータを保持します。

ただし、次のビューで1つのリクエストにのみフラッシュを使用したいというユースケースに遭遇し、それを行う簡単な方法を見つけました。それは、セッションを取得するのではなく、セッションからプルすることです。はSession::pull()セッションデータを取得し、セッションから削除します。

@if (Session::has('message'))
   <div class="alert alert-message">{{Session::pull('message'}}</div>
@endif

お役に立てれば!

于 2020-01-25T18:43:25.937 に答える
0

これはおそらくコードに関する他の問題です。コードを共有できれば、この問題についてより良い洞察を得るのに役立ちます。

以下のコードスニペットを使用して、Laravelブレードテンプレートにエラーメッセージをフラッシュできます。

@if (Session::has('message'))

    <div class="alert alert-success">{{Session::get('message')}}</div>

@endif
于 2014-04-26T19:36:12.587 に答える
0

Session::reflash()コントローラーで使用したため、同じような問題が発生したことがあります。

Session::reflash()セッション全体がフラッシュされるため、コントローラーまたはアプリケーションのどこにも存在しないことを確認してください...使用例:Session::keep(array('username', 'email'));フラッシュデータのサブセットのみを再フラッシュする

于 2015-01-22T08:52:40.057 に答える
0

ビューを作成しているとき(リダイレクトしていないとき)にメッセージを一度フラッシュする簡単な方法は次のとおりです。

Session::flash($key, $value);
Session::push('flash.old', $key);

こちらをご覧ください

于 2015-07-31T10:25:26.943 に答える
0

このflashメソッドは、次のリクエストのためにデータを保存するためのものです。理想的には、データをセッションにフラッシュした後、新しいルートにリダイレクトする必要があります。(これは受け入れられた答えが示唆するものです。)

ただし、リダイレクトしない場合はforget、ブレードテンプレートにセッションを表示した後でメソッドを呼び出すことができます。

{{ session()->flash('key') }}

@php
    session()->forget('flash-info');
@endphp
于 2018-02-18T21:47:13.710 に答える