2017-05-24 7 views
0

「アラート」テーブルから「アラート数」を取得するためのコードを記述しています。「/layouts/app.blade.php」に明らかに表示されているアラート数をメニューに表示したいとします。Laravel 5.4のすべてのページでセッションデータを更新およびアクセスする方法は?

/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUser.php 

protected function sendLoginResponse(Request $request) 
{ 
    /*** I have added the session here ***/ 
    $request->session()->regenerate(); 
    $count = DB::table('alerts') 
      ->where('acknowledged', 1) 
      ->count(); 
    $request->session()->put('count_alert', $count); 
    /***** END's here ******/ 

    $this->clearLoginAttempts($request); 

    return $this->authenticated($request, $this->guard()->user()) 
      ?: redirect()->intended($this->redirectPath()); 
} 

私は/resources/views/layouts/app.blade.php

でそのセッションを示しています。このために私は、ユーザーがログインするには以下のような既存のセッションにセッションデータを追加していた後のようなセッションを使用しています
$value = Session::get('count_alert'); 
<a href="{{ url('/alerts') }}"> echo ' ('.$value.') '; </a> 

ITSは今まで正常に動作しますが、ユーザがアラートを更新した場合、その後、その後変更されます数える私はそれはそれはapp.blade.phpファイルのレイアウトに示さなければならないためとして、アプリケーション全体を通してカウントを維持しなければなりません。 ページリフレッシュの手段そのセッションを更新し、メニュー(ヘッダー)に表示する必要があります。どんな助けもありがとう。ありがとう。

答えて

0

ページリフレッシュは現在のrouteをリロードします。この表示を示すmethodの中に&アラートカウントを設定する必要があります。したがって、このページがロードされるたびに。あなたは最新のアラートカウントを取得します。

たとえば、あなたのビューは、表示するには、この数を送信した後は、あなたが名前のルートuser.index

public function index(Request $request) 
{ 
    //Get the alert count 
    $alert_count = DB::table('alerts')->count(); 

    return view('user.index',[ 
     'alert_count' => $alert_count, 
    ]); 
} 

を訪問したときに返されるuser.indexです。あなたは、返信用この

//user.index.blade.php 
{{ $alert_count }} 
+0

感謝を行うことができますが、これはまさにあなたが唯一のルートのためのソリューションを言ったので、私は望んでいた答えが、私はすべてのルートのためにそれをしたい、アプリケーション全体ですべてのページではありません。 –

+0

この場合、ミドルウェアが解決策です。同じ機能を持つミドルウェアをセットアップして、このミドルウェアを任意の数のルートに追加することができます –

+0

ありがとう、しかし私は理解しませんでした。私は簡単にミドルウェアについて少し知っている。簡単に説明することができますか? –

関連する問題