如何在 Laravel 的每个页面上加载我的动态菜单项?
Posted
技术标签:
【中文标题】如何在 Laravel 的每个页面上加载我的动态菜单项?【英文标题】:How do i load my dynamic menu item on every page in Laravel? 【发布时间】:2020-01-21 13:28:29 【问题描述】:有没有办法在每个页面上加载我的菜单类别和子类别(从数据库中获取)?我正在做的是
$categories = $this->someService->getAllCategories();
return view('some-view',compact('categories'));
在我从控制器返回的每个视图上。有没有好办法处理这种情况?
【问题讨论】:
你可以使用View Composers。 你可以把它放在你的布局文件中 有没有 View Composers 的替代品?我担心这可能会影响我的应用性能。 【参考方案1】:使用 View Composers,您可以在每次使用视图时将数据传递给视图。
您应该将使用类别的 html 外包到它自己的部分中,然后在您的 ServiceProvider 中:
View::composer('some-view-partial', function ($view)
return $this->someService->getAllCategories();
);
是的,每次页面加载时的数据库调用都会影响您的页面加载时间。但是视图合成器是每次获取数据的最佳方法(视图合成器本身不会影响您的加载时间,它内部发生的事情会影响它)。
如果类别不经常更改,请考虑将它们存储在应用程序缓存中,这样您就不会经常访问数据库。
【讨论】:
以上是关于如何在 Laravel 的每个页面上加载我的动态菜单项?的主要内容,如果未能解决你的问题,请参考以下文章