如何将变量传递给Laravel中的服务提供商


how to pass a variable to service provider in Laravel?

我想在侧边栏中生成一个动态菜单,并与Laravel 5.1中的所有视图共享。

类似:

- Marks Module
    - Langosh Topic
       - Content 1
       - Content 2
    -Nitzsche Topic
       - Content 3
- Rolfson Module

尽管所有这些元素都属于另一个名为课程的实体,我可以在顶部菜单中选择它(用户可以有多个课程)。

因此,每次我访问"课程"、"模块"、"主题"或"内容"时,他们都需要告诉侧边栏菜单哪个课程是所有孩子的父亲(或祖父)来生成菜单。

在AppServiceProvider中,我有视图编辑器,一切都很好,但我使用会话来获取课程ID,我不喜欢这样做。

我如何将$课程传递给服务提供商,或者有其他更好的方法吗?

实际上,在这种情况下,您不应该尝试将变量传递给服务提供商。如果需要,可以使用Laravel的容器来完成,因为它是全局的,并且在应用程序启动时初始化。

但由于您只是构建菜单,我建议将菜单构建委托给特定的类。在控制器中创建此类的实例并将其传递给视图。调用它的方法,迭代它的属性以获得菜单结构。

如果您有各种应用程序部件提供有关此侧菜单的信息,则可以利用事件将菜单片段聚集在一起。