如何更新&在Laravel 5.4的每个页面上访问会话数据?

时间:2017-05-24 10:21:02

标签: session laravel-5.4

我正在编写用于从“警报”表中获取“警报”计数的代码,并且我希望在“/layouts/app.blade.php”中显示的菜单中显示警报计数。为此,我正在使用会话,例如在用户登录之后我将会话数据添加到现有会话中,如下所示:

/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>

它的工作正常,但如果用户更新警报,那么计数将被更改,然后我必须在整个应用程序中维护该计数,因为它必须显示在布局app.blade.php文件中。 手段页面刷新我需要更新该会话并显示在菜单(标题)中。任何帮助,将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

页面刷新会重新加载当前route。你应该得到&amp;在显示此视图的method内设置警报计数。所以每次加载这个页面。您将获得最新的警报计数。

例如。您的视图为user.index,当您访问指定路线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.blade.php
 {{ $alert_count }}