我有一个登录时使用的布局。menu.blade.php
。
然后我在刀片文件@extends('admin.layouts.menu')
我想在布局中显示一些信息,让我们说出"消息附近的消息数量"菜单中的链接。我可以通过添加:
轻松完成此操作$message_count = Message::where("user_id", Auth::user()->id)->count();
并将<div>{{$message_count}}</div>
添加到menu.blade.php
到每个控制器并查看使用布局的位置,但这显然不是一种干净的方法。
有没有办法在一个步骤中将信息传递给视图,而不是必须在每个控制器中执行?
答案 0 :(得分:3)
视图组合器是在呈现视图时调用的回调或类方法。如果每次渲染视图时都希望将数据绑定到视图,则视图编辑器可以帮助您将该逻辑组织到一个位置
在服务提供商中注册视图编辑器:
public function boot()
{
View::composer('menu', function ($view) {
$view->with('messagesCount', auth()->user()->messages->count())
});
}
然后,每次呈现menu
视图时,它都会有$messagesCount
变量,其中包含经过身份验证的用户的已计数消息。