如何在 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 的每个页面上加载我的动态菜单项?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 中制作全局标题

如何在 Sencha 中动态加载轮播项目

如何在我的项目上设置惯性,当我尝试加载登录页面时出现错误

Laravel 5.3 - 如何记录页面上的所有查询?

Vuex Laravel 加载所有数据

如何在laravel中制定导航栏链接到其页面?