我有一个登录时使用的布局.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
每个控制器和视图使用布局,但这显然不是一个干净的方法。
有没有办法在一个步骤中将信息传递给视图,而不是必须在每个控制器中执行?
视图组合器是在呈现视图时调用的回调或类方法。如果每次呈现视图时都希望将数据绑定到视图,则视图编辑器可以帮助您将该逻辑组织到一个位置
在服务提供商中注册视图编辑器:
public function boot()
{
View::composer('menu', function ($view) {
$view->with('messagesCount', auth()->user()->messages->count())
});
}
然后,每次呈现menu
视图时,它将具有$messagesCount
变量,其中包含经过身份验证的用户的计数消息。