Session 如何更新&;访问Laravel 5.4中每页的会话数据?
我正在编写从“警报”表中获取“警报”计数的代码,我想在“/layouts/app.blade.php”中明显显示的菜单中显示警报计数。为此,我使用的会话类似于用户登录后,我将向现有会话添加会话数据,如下所示: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) { /***
/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 }}
谢谢你的回复,但这并不是我想要的答案,因为你说的解决方案只适用于单个路由,但我希望它适用于整个应用程序的每个路由、每个页面。在这种情况下,中间件就是解决方案。您可以设置一个具有相同功能的中间件,并将此中间件添加到任意数量的路由中。谢谢,但我不明白。我对中间件略知一二,不是很简单。请您简要解释一下。谢谢您的回复,但这并不是我想要的答案,因为您说的解决方案仅适用于单个路由,但我希望它适用于整个应用程序的每个路由、每个页面。在这种情况下,中间件就是解决方案。您可以设置一个具有相同功能的中间件,并将此中间件添加到任意数量的路由中。谢谢,但我不明白。我对中间件略知一二,不是很简单。你能简单解释一下吗。