如何在子文件夹中的laravel中获取配置数据

时间:2013-07-08 17:19:43

标签: php laravel

我有Laravel Administrator Plugin,我设置了一个设置管理员页面,位于:

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

应用程序可以存储数据,但是当我尝试在我的某个控制器中获取某些数据时,这样:

配置::得到( 'administrator.settings.site')

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

我如何获得这些配置值?

2 个答案:

答案 0 :(得分:36)

解决方案:

您可以为文件路径使用文件路径而不是点符号:

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,具体取决于您的环境。

app/config内的目录被视为环境。例如,当您处于“开发”环境时,app/development/database.php将与Config::get('database.whatever')一起使用,而当您处于“生产”环境时,app/production/database.php将与Config::get('database.whatever')一起阅读

当没有特定于环境的文件时,Laravel会回退到config/config/*.php文件。

注意

我认为管理包在app/config/packages/frozennode/administrator/administrator.php中有一个config file,我们希望您将其用于设置。应该可以使用this conventionConfig::get('package::file.option');

答案 1 :(得分: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简写名称的来源,但我怀疑它与包中的the Excel facade有关,并将其自身公开为'excel'