9

我有Laravel 管理员插件,并设置了一个设置管理员页面,该页面位于:

应用程序/配置/管理员/设置/site.php

该应用程序可以存储数据,但是当我尝试在我的一个控制器中获取一些数据时,如下所示:

配置::get('administrator.settings.site')

我可以得到一个返回值...始终为 null 或数组 0。

我如何获得这些配置值?

4

2 回答 2

38

解决方案:

您可以对文件路径使用文件路径而不是点表示法:

Config::get('administrator/settings/site.variable_name');

一些解释

点表示法用于获取文件中配置数组内的变量,而不是表示文件路径。

因此,您可以使用Config::get('administrator/settings/site.variable_name');administrator/settings/site.phpENV_DIR_NAME/administrator/settings/site.php根据您的环境获取 $variable_name 。

in 中的目录app/config被视为环境。例如app/development/database.phpConfig::get('database.whatever')当您在“开发”环境中时app/production/database.php可以使用Config::get('database.whatever'),而在“生产”环境中时可以使用。

config/config/*.php当不存在特定于环境的文件时,Laravel 会回退到该文件。

笔记

我相信 admin 包有一个配置文件app/config/packages/frozennode/administrator/administrator.php该包希望您在其中使用它的设置。这应该可以使用这个约定Config::get('package::file.option');

于 2013-07-08T18:04:52.133 回答
0

我在使用这个Laravel-Excel包时遇到了一个非常相似的问题。

我需要的解决方案与上面的解决方案略有不同。我需要利用 Laravel 的配置覆盖特性来设置一个用于正常执行的配置设置和一个用于测试的不同设置。具体来说,我通常希望将 Excel 文件存储在storage/excel其中,并希望将它们投入storage/testing/excel测试。

使用斜线路径的技术不起作用,因为它指向一个特定的文件,所以不尊重不同的环境:

$directory = Config::get('packages/maatwebsite/excel/export.store.path');

解决方案是使用包前缀,以便配置加载器尊重环境:

$directory = Config::get('excel::export.store.path');

我不完全确定速记名称的来源excel,但我怀疑这与包中将自身暴露为.'excel'

于 2015-09-09T15:30:07.157 回答