将信息添加到布局而无需在每个控制器上调用它

问题描述 投票:2回答:1

我有一个登录时使用的布局.menu.blade.php

然后我在刀片文件@extends('admin.layouts.menu')中使用它

我想在布局中显示一些信息,比如说菜单中“message”链接附近的消息数量。我可以通过添加以下内容轻松完成:

$message_count = Message::where("user_id", Auth::user()->id)->count();

并添加:<div>{{$message_count}}</div>menu.blade.php

每个控制器和视图使用布局,但这显然不是一个干净的方法。

有没有办法在一个步骤中将信息传递给视图,而不是必须在每个控制器中执行?

php laravel blade
1个回答
3
投票

使用view composers

视图组合器是在呈现视图时调用的回调或类方法。如果每次呈现视图时都希望将数据绑定到视图,则视图编辑器可以帮助您将该逻辑组织到一个位置

在服务提供商中注册视图编辑器:

public function boot()
{
    View::composer('menu', function ($view) {
        $view->with('messagesCount', auth()->user()->messages->count())
    });
}

然后,每次呈现menu视图时,它将具有$messagesCount变量,其中包含经过身份验证的用户的计数消息。

© www.soinside.com 2019 - 2024. All rights reserved.