如何在 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

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

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

在 AppServiceProvider 中,我有 view composer 并且一切正常,但我正在使用会话来获取课程 ID,我不想去想。

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

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

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

如果您有各种应用程序部分提供有关此侧边菜单的信息,您可以利用 events 将菜单​​部分收集在一起。