如何从laravel中的模板刀片获取数据而不从它的每个子视图传递?

问题描述

所以,我想知道在这种情况下,我在 index.blade 中有一个需要类别数据的导航栏(作为具有许多扩展子视图的模板刀片)。由于控制器不会调用 index.blade,我可以从哪里获取数据?

我也有扩展 index.blade 的 homepage.blade,我知道我可以将类别数据从 homepage.blade 传递到 index.blade,但我认为这不是正确的事情,因为每次你调用一个扩展的刀片时index.blade,你必须从数据库获取类别数据。

这是我的代码

index.blade

<div class="container">
    @include('layouts.navbar')

    @auth
        <h2 class="greetings mt-4">Welcome,@if (Auth::user()->role == 'Admin')
                Admin 
            @endif
        {{Auth::user()->name}}</h2>
    @endauth
    
    <div class="container">
        @yield('content')
    </div>

</div>

导航栏.blade

<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
    @foreach ($categories as $category)
        <a href="{{ route('categories.show',['category' => $category->id]) }}" class="dropdown- 
         item">{{ $category->name }}</a>    
    @endforeach
                    
</div>

主页.blade

@extends('index')

@section('content')
<div class="row mb-4">
    @foreach ($articles as $article)
        <div class="col-md-4 mt-4">
            <div class="card" style="width: 17rem;">
                <div class="card-body">
                        <h4 class="card-title">{{ $article->title }}</h4>
                    <p class="card-text"></p>
                    <p>Category : <a href="">{{ ($article->category)->name }}</a></p>
                        
                 </div>
            </div>
        </div>
    @endforeach
</div>
@endsection

家庭控制器(调用 homepage.blade)

public function index()
{
    $articles = article::all();
    $categories = category::all(); //<- I have to get and this everytime I call another controller to another blade

    return view('layouts.homepage',compact('articles','categories'));
}

如果我这样做,那么每次我想调用一个扩展 index.blade 的刀片视图时,我都必须获取类别数据。但我不认为这是正确的方法。对不起,如果太长,我很难解释这个问题,谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)