在 laravel 8 的边栏中显示记录数
Show record counts in sidebar in laravel 8
我正在 Laravel 8 中编写一个项目。我想在左侧菜单中显示每个菜单的编号。其实我有办法。将其他模型添加到站点上的所有控件。但这不是正确的方法。有替代方案吗?
例如:
My sidebar menus:
Tools (12)
Users (10)
Settings
我需要将此代码插入所有控件函数
$tools_1= Tools1::all()->count();
$users = Users::all()->count();
我也把这段代码写到侧边栏了
<li class="nav-item">
<a href="{{route('admin.x')}}" class="nav-link">
<i class="nav-icon fas fa-warehouse"></i>
<p>
Tools
<span class="badge badge-info right">{{ $tools_1 }}</span>
</p>
</a>
</li>
<li class="nav-item">
<a href="{{route('admin.y')}}" class="nav-link">
<i class="nav-icon fa fa-car"></i>
<p>
Users
<span class="badge badge-info right">{{ $users }}</span>
</p>
</a>
</li>
是否有更合理的解决方案?
您可以将边栏提取到 blade 组件并在那里执行查询。
https://laravel.com/docs/8.x/blade#components
您可以将边栏标记移动到部分 - 比如 sidebar.blade.php
然后使用视图编辑器将数据传递到侧边栏。在服务提供商的启动方法中注册 View composer - 即使是 AppServiceProvider 也可以。
在视图编辑器中使用缓存来提高性能和限制数据库查询
//In the boot method of service provider
View::composer('sidebar', function ($view) {
$counts = Cache::remember('counts', 3600, function() {
return [ 'tools_1' => Tools1::count(), 'users' => User::count() ];
});
return $view->with('counts', $counts);
});
//OR you can use a wildcard to share data with multiple views
View::composer('admin.*', function ($view) {
$counts = Cache::remember('counts', 3600, function() {
return [ 'tools_1' => Tools1::count(), 'users' => User::count() ];
});
return $view->with('counts', $counts);
});
Laravel 文档:
然后在局部你可以使用通过view composer传递的数据
<span class="badge badge-info right">{{ $counts['users'] }}</span>
<span class="badge badge-info right">{{ $counts['tools_1'] }}</span>
我正在 Laravel 8 中编写一个项目。我想在左侧菜单中显示每个菜单的编号。其实我有办法。将其他模型添加到站点上的所有控件。但这不是正确的方法。有替代方案吗?
例如:
My sidebar menus:
Tools (12)
Users (10)
Settings
我需要将此代码插入所有控件函数
$tools_1= Tools1::all()->count();
$users = Users::all()->count();
我也把这段代码写到侧边栏了
<li class="nav-item">
<a href="{{route('admin.x')}}" class="nav-link">
<i class="nav-icon fas fa-warehouse"></i>
<p>
Tools
<span class="badge badge-info right">{{ $tools_1 }}</span>
</p>
</a>
</li>
<li class="nav-item">
<a href="{{route('admin.y')}}" class="nav-link">
<i class="nav-icon fa fa-car"></i>
<p>
Users
<span class="badge badge-info right">{{ $users }}</span>
</p>
</a>
</li>
是否有更合理的解决方案?
您可以将边栏提取到 blade 组件并在那里执行查询。 https://laravel.com/docs/8.x/blade#components
您可以将边栏标记移动到部分 - 比如 sidebar.blade.php
然后使用视图编辑器将数据传递到侧边栏。在服务提供商的启动方法中注册 View composer - 即使是 AppServiceProvider 也可以。
在视图编辑器中使用缓存来提高性能和限制数据库查询
//In the boot method of service provider
View::composer('sidebar', function ($view) {
$counts = Cache::remember('counts', 3600, function() {
return [ 'tools_1' => Tools1::count(), 'users' => User::count() ];
});
return $view->with('counts', $counts);
});
//OR you can use a wildcard to share data with multiple views
View::composer('admin.*', function ($view) {
$counts = Cache::remember('counts', 3600, function() {
return [ 'tools_1' => Tools1::count(), 'users' => User::count() ];
});
return $view->with('counts', $counts);
});
Laravel 文档:
然后在局部你可以使用通过view composer传递的数据
<span class="badge badge-info right">{{ $counts['users'] }}</span>
<span class="badge badge-info right">{{ $counts['tools_1'] }}</span>