【问题标题】:Laravel merging configs in Laravel packagesLaravel 合并 Laravel 包中的配置
【发布时间】:2019-02-20 17:21:51
【问题描述】:

我正在 laravel 上写一个包,它需要安装一些包。

我想用应用程序的已发布副本覆盖自己的包配置文件,并在我的包服务提供商的 register 方法中使用 mergeConfigFrom 方法。但它并没有像我预期的那样工作

app/config/publishedConfig.php

return [
  'dashboard_url' => 'home',
  'logout_url' => 'logout',
  'login_url' => 'login'
];

还有

package/vendor/path/to/config/config.php

return [
   'dashboard_url' => 'dashboard/login',
   'logout_url' => 'dashboard/logout',
   'login_url' => 'mongodb-login'
]

然后在我的包服务提供商的注册方法中,我使用如下所示的 mergeConfigFrom 在运行时覆盖 publishedConfig:

public function register(){

    $this->mergeConfigFrom(
         __DIR__.'/config/adminlte-logo.php','publishedConfig'
    );
}

之后我使用dd(config('publishedConfig')) helper 来获取合并结果但是结果没有改变。

预期结果是:

   'dashboard_url' => 'dashboard/login',
   'logout_url' => 'dashboard/logout',
   'login_url' => 'mongodb-login'

我会感谢任何解决我问题的人。

提前致谢

【问题讨论】:

  • 您的预期结果是什么?您确定mergeConfigFrom() 覆盖 现有值,还是只是添加尚不存在的新值?
  • 我认为你是对的,它只是添加新值,预期结果是 array_merge 函数所做的。删除旧的重复键值并返回新的。

标签: php laravel package config


【解决方案1】:

最后我用--force标签的方式覆盖了它。

php artisan vendor:publish --tag=config --force

【讨论】:

    猜你喜欢
    • 2020-12-02
    • 2016-02-14
    • 2015-04-14
    • 2015-02-22
    • 1970-01-01
    • 2023-01-17
    • 2015-09-03
    • 1970-01-01
    • 2018-10-12
    相关资源
    最近更新 更多