2013-01-25 25 views
2

這個頭疼!從我的會話laravel的閃存方法的理解,一旦被設置,那麼調用,它就會被破壞......Laravels閃存會話存儲數據兩次

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

上下行的某處

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

我用這對錶單驗證。現在,當表單沒有生效時,應用程序顯示錯誤,如果我修改表單並重新發布數據庫更新,細節顯示正確,但錯誤再次出現!如果我發佈不驗證的表單,這也是一樣的,它會顯示錯誤,但如果我點擊同一頁面的導航鏈接,它會再次顯示!

有人遇到過嗎?

問候

盧克

+0

你如何確認閃光的數據是什麼問題?你可以發佈你的驗證碼嗎? – hayhorse

+0

我也有同樣的問題! –

回答

6

我曾經有過這個問題當我做了一個return view()/return View::Make它應該是我的Controller @ update方法中的一個return redirect()->route()

2

走出laravel文檔的:

閃存方法存儲在會議的項目的下一個請求天后到期。這對於存儲臨時數據(如狀態或錯誤消息)很有用。

這意味着,它可在當前和下一個請求。如果您訪問它,它不會自動刷新。爲此,請使用Session::flush('key');

0

這可能是您的代碼的其他問題,如果您可以分享您的代碼,它可以幫助我們更好地瞭解此問題。

您可以使用下面的代碼片斷將Flash Error消息發送到您的laravel blade模板。

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

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

@endif 
0

我曾經有過類似的問題,因爲我在我的控制器中使用了Session::reflash()

確保你沒有Session::reflash()地方在您的控制器或任何在您的應用程序,因爲它閃爍整個會話...使用例如:Session::keep(array('username', 'email'));,以重新刷新只有一個子集的閃存

0

一個簡單的方法時要創建的視圖(而不是重定向)閃爍的消息,一旦是:

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

參見here.

0

flash方法是指用於存儲數據的下一個請求。理想情況下,在將數據刷新到會話後,您應該重定向到新路線。 (這就是接受的答案所暗示的。)

但是,如果你不重定向可以調用您的刀片模板顯示在會議結束後的forget方法:

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

@php 
    session()->forget('flash-info'); 
@endphp 
+0

5年前,你知道我問過這個問題嗎? –

+0

是的,但這不僅僅是OP從答案中獲益的原因。人們提到這些問題,他們希望答案能夠在新版本的工具中發揮作用。昨天這個問題在Google搜索中出現了。還有其他類似的問題,但我選擇在這裏回答,因爲他們的意見不多。 –