在Laravel 5.1中如何覆盖配置变量

5
在我的config/app.php文件中,我添加了一些变量,并在我的控制器和视图文件中使用了这些变量。如下所示变量:
'META_TITLE' => 'title'
'META_KEYWORDS' => 'keyword'
'META_DESCRIPTION' => 'description'

我曾这样使用这些变量:Config::get("app.META_TITLE")

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

3个回答

4

很不幸,我现在在5.8+版本中遇到了Dusk hack的问题,因此有一个新的问题:https://stackoverflow.com/q/58450836/470749 - Ryan

4

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',

]); 

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


3
听起来像是一个简单的检查,看看值是否需要覆盖。
在控制器中:
$title = Config::get("app.META_TITLE");

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

换言之,简单来说:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接