Session 如何更新&;访问Laravel 5.4中每页的会话数据?

Session 如何更新&;访问Laravel 5.4中每页的会话数据?,session,laravel-5.4,Session,Laravel 5.4,我正在编写从“警报”表中获取“警报”计数的代码,我想在“/layouts/app.blade.php”中明显显示的菜单中显示警报计数。为此,我使用的会话类似于用户登录后,我将向现有会话添加会话数据,如下所示: /vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUser.php protected function sendLoginResponse(Request $request) { /***

我正在编写从“警报”表中获取“警报”计数的代码,我想在“/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>
$value=Session::get('count_alert');

到目前为止,它工作正常,但如果用户更新了警报,那么计数将被更改,然后我必须在整个应用程序中保持该计数,因为它必须显示在layouts app.blade.php文件中表示在页面刷新时,我需要更新该会话并显示在菜单(标题)。任何帮助都将不胜感激。谢谢。

页面刷新将重新加载当前的
路线。您应该在显示此视图的
方法中获取并设置警报计数。所以每次加载此页面时。您将获得最新的警报计数

比如说。您的视图是
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 }} 

页面刷新将重新加载当前的
路由
。您应该在显示此视图的
方法中获取并设置警报计数。所以每次加载此页面时。您将获得最新的警报计数

比如说。您的视图是
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 }} 

谢谢你的回复,但这并不是我想要的答案,因为你说的解决方案只适用于单个路由,但我希望它适用于整个应用程序的每个路由、每个页面。在这种情况下,中间件就是解决方案。您可以设置一个具有相同功能的中间件,并将此中间件添加到任意数量的路由中。谢谢,但我不明白。我对中间件略知一二,不是很简单。请您简要解释一下。谢谢您的回复,但这并不是我想要的答案,因为您说的解决方案仅适用于单个路由,但我希望它适用于整个应用程序的每个路由、每个页面。在这种情况下,中间件就是解决方案。您可以设置一个具有相同功能的中间件,并将此中间件添加到任意数量的路由中。谢谢,但我不明白。我对中间件略知一二,不是很简单。你能简单解释一下吗。