Как загрузить пункт меню Dynami c на каждой странице в Laravel? - PullRequest
0 голосов
/ 21 января 2020

Есть ли способ загрузить категории и подкатегории моего меню (которые извлекаются из базы данных) на каждой странице? То, что я делал, было

$categories = $this->someService->getAllCategories();
return view('some-view',compact('categories'));

на каждом представлении, которое я возвращал с контроллера. Есть ли хороший способ справиться с такой ситуацией?

1 Ответ

0 голосов
/ 21 января 2020

Используя View Composers, вы можете передавать данные в представление каждый раз, когда оно используется.

Вам следует передать на аутсорсинг html, который использует категории, в свою собственную часть, затем в ServiceProvider:

View::composer('some-view-partial', function ($view) {
    return $this->someService->getAllCategories();
});

И да, вызов базы данных при каждой загрузке страницы влияет на загрузку вашей страницы время. Но представление composer - это лучший способ получать данные каждый раз (и само представление composer не повлияет на ваше время загрузки, то, что происходит внутри него, повлияет на него).

Рассмотрите возможность хранения ваши категории в вашем кеше приложений, если они не меняются так часто, чтобы вы не часто обращались к своей базе данных.

...