微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何从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 举报,一经查实,本站将立刻删除。