Как перенести данные в родительский шаблон без дублирования кода, - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть основной макет, который содержит заголовок, навигацию, нижний колонтитул и c множество шаблонов блейдов с унаследованными от него. Моя проблема: у меня есть категории, которые мне нужно подключить в моей панели навигации, также во многих дочерних шаблонах, может быть, это можно сделать как-то глобально без дублирующего кода.

Это мой шаблон индекса возврата HomeContoller, но если я вернуть мои категории с помощью $categories мой основной макет не может видеть эту переменную

public function index()
{  
    $posts = Post::paginate(10);

    $popularPosts = Post::orderByViews()->take(6)->get();

    return view('front.index', ['posts' => $posts, 'popularPosts' => $popularPosts]);
}

Теперь я возвращаюсь к layout.blade мои $categories этим методом.

@php
    $categories = App\Category::all();
@endphp

1 Ответ

1 голос
/ 12 февраля 2020

Для этого конкретного случая я бы предложил Просмотр Composer - особенно, если вы прокрутите немного вниз на этой странице, вы увидите Attaching A Composer To Multiple Views - вы можете использовать:

View::composer('*', function ($view) {
    $view->with('categories', App\Category::all());
});

Вы можете зарегистрировать его у любого из существующих провайдеров, например AppServiceProvider по методу boot:

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        View::composer('*', function ($view) {
            $view->with('categories', App\Category::all());
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...