【问题标题】:how to pass a variable to service provider in Laravel?如何将变量传递给 Laravel 中的服务提供者?
【发布时间】:2016-03-17 07:20:29
【问题描述】:

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

喜欢:

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

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

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

在 AppServiceProvider 中,我有视图作曲家,一切正常,但我正在使用会话来获取课程 ID,我不想知道。

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

【问题讨论】:

  • 你为什么不从你的控制器调用视图作曲家?
  • 如果我必须从我的控制器调用视图编辑器,我可能只是将 var 传递给我在每个控制器中加载的视图,这样就可以完成工作。这实际上可能是答案。
  • 你在哪里加载$course?如果您在控制器中这样做,则无法将其传递给服务提供者,因为此时它已经加载。
  • 是的,我正在控制器中加载 $course。那有什么更好的解决方案吗?我真的不想在每个控制器的每个动作中手动传递它。它必须有更好的方法

标签: php laravel relationship service-provider


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2021-04-12
    • 2014-09-28
    相关资源
    最近更新 更多