在Laravel 5.1中覆盖Config变量

时间:2015-12-11 13:35:17

标签: php laravel-5 global-variables laravel-5.1 meta-tags

在我的config / app.php文件中,我添加了一些变量,我在控制器中使用了这些变量并查看了文件。见下面的变量:

'META_TITLE' => 'title'
'META_KEYWORDS' => 'keyword'
'META_DESCRIPTION' => 'description'

我已使用这些变量,例如Config::get("app.META_TITLE")

但我想根据要求在我的任何控制器中覆盖这些变量。

3 个答案:

答案 0 :(得分:1)

这听起来像是一个简单的检查,看看是否需要覆盖该值。

在控制器中:

$title = Config::get("app.META_TITLE");

if ($titleOverrideValue) {
    $title = $titleOverrideValue;
}

或者,以更短的方式:

$title = $titleOverrideValue ?: Config::get("app.META_TITLE");

答案 1 :(得分:0)

Laravel将所有配置文件值存储到一个单独的数组中。所以," Laravel方式"设置后覆盖配置变量的方法是编辑存储它们的数组:

config([

    // overwriting values set in config/app.php
    'app.META_TITLE'       => 'new meta title',
    'app.META_KEYWORDS'    => 'new meta keywords',
    'app.META_DESCRIPTION' => 'new meta description',

    // in case you would like to overwrite values inside config/services.php
    'services.facebook.client_id'     => 'client id',
    'services.facebook.client_secret' => 'client secret',

]); 

使用此概念,您可以编辑任何配置文件中的任何变量集 - 只需指定它们存储在哪个配置文件中。

答案 2 :(得分:0)

对于Laravel 5.1,来自docs(也适用于5.8

  

要在运行时设置配置值,请将数组传递给config帮助器:

     

config(['app.timezone' => 'America/Chicago']);

但是请注意,如果您想在黄昏中覆盖环境变量,此方法会有所帮助:https://laracasts.com/discuss/channels/testing/how-to-change-env-variable-config-in-dusk-test?page=1#reply=475548