【发布时间】: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