我知道之前曾有人问过这个问题,但是我一直在努力寻找适合我需求的答案,或者是针对Laravel的最新版本的答案。
基本上,我有大量的变量,这些变量将使用Route和数据库中的数据来创建。例如,我需要使用Route设置一个名为“ current_page”的变量,该变量使用唯一的url列从“ pages”表中提取详细信息。 ($current_page = Page::where('url', <url-taken-from-route>)->first();
)
$ current_page将需要包含几个关系。还有其他全局变量,例如$current_site
(这是一种具有一个主页和嵌套微站点的多站点环境)等。
我认为配置文件不是创建这些变量的正确位置,因为a)变量的值可以嵌套和复杂,b)它们不是常量,而是从数据库中检索的数据。
View Composers显然仅适用于视图,考虑到我们正在处理页面,站点以及可能的其他全局变量,Helper类感觉太通用了。
我收集的全局变量不被接受,但是这些确实是全局的。在每种情况下,这些值始终是相同的(尽管是动态的),并且大多数视图和控制器都需要使用这些值。
我还考虑过将方法放入我现有的Page
和Site
控制器中,以便我可以调用Page::current()
,但不确定将静态方法放入主要为非静态的控制器中是正确的事情。而且,这将使我每次调用Page :: current()时都进行数据库调用,而不是将当前页存储在内存中的某个位置。
现在,我已经创建了一个BaseController,所有其他控制器都从此扩展。我已将这些变量放入构造函数中,并在每种方法中将它们手动传递给视图。 (我知道这很杂乱,不适用于模型)。
那么最好的解决方案是什么?在哪里声明可以在任何地方使用但不会感到麻烦的全局变量?
谢谢