laravel - (Laravel 8.x)从数据库中获取数据并直接从主布局中使用它而不从参数传递它
问题描述
我的问题
Framework : Laravel 8.x
我想从 DB 调用我的菜单并在 处使用它layout.blade.php
,但我将它layout.blade.php
用作我的视图的主布局,所以它只是从其他视图扩展而来。
所以,我打电话就是这样。
布局.blade.php
<!DOCTYPE html>
... some codes ...
<!-- Menu Navigation Before Using DB -->
<ul>
<li>Menu 1</li>
<li>Menu 2</li>
<li>Menu 3</li>
<li>Menu 4</li>
<li>Menu 5</li>
</ul>
<!-- Menu Navigation After Using DB -->
<ul>
@foreach ($menus as $menu)
<li>{{ $menu->name }}</li>
@endforeach
</ul>
<!-- Body Content -->
@yield('body_content')
索引控制器.php
public function index()
{
return view('index_page', ['menus' => $getMenusFromDB]); //just for example
}
index.blade.php
@extends('layout', ['menus' => $menus])
@section('body_content')
<p>Hello World !</p>
@endsection
我有很多视图链接到这个布局,所以我不能传递这样的menus
参数。
我的问题
我如何$menus
直接使用从 DB 调用的这个来使用它layout.blade.php
而不从我的扩展视图中传递它?
解决方案
:) 你很幸运!Laravel 有一个预先构建的功能,可以与所有视图共享数据。请查看他们的文档!
例如:
App\Providers\AppServiceProvider.php
use Illuminate\Support\Facades\View;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
// Just do it like how you would normally pass data with view helpers
View::share('$menus', '$menuFromDB');
}
}
布局.blade.php
<ul>
@foreach ($menus as $menu)
<li>{{ $menu->name }}</li>
@endforeach
</ul>
推荐阅读
- java - recylerview适配器中的getItemcount方法
- ios - xcode 12 中的 GADUnifiedNativeAdView 中缺少 IBOutlets
- elasticsearch - Elasticsearch 特殊条件查询
- android - 当应用程序未在 Android 上运行时,使用 React Native 在状态栏上显示通知图标
- python - 在日志文件中获取具体日期并进行处理
- excel - Excel VB 和 XML 命名空间命名约定
- maven - Blackduck 扫描显示文件已被旧版本的 Jetty Http 修改
- wordpress - 联系表格 7 文件附件未附加到电子邮件
- xml - 如何使用配置变量在 NLog FileTarget 上配置 maxArchiveDays
- python - Python SQLite 查询总是返回 None