我创建了一个Laravel包,将其上传到packagist并设法使用composer require安装它。
我现在遇到了一个问题,我不知道如何修复它并进行搜索无济于事。
我有一个配置文件,它将默认配置文件发布到config目录。我已对已发布的文件进行了更改,现在我希望我的包使用此配置文件,但它使用的是包中的配置文件,而不是新更新的已发布文件。 这是供应商src文件夹中的服务提供商
namespace Clystnet\Vtiger;
use Illuminate\Support\ServiceProvider;
class VtigerServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
$this->publishes([
__DIR__ . '/Config/config.php' => config_path('vtiger.php'),
], 'vtiger');
// use the vendor configuration file as fallback
$this->mergeConfigFrom(
__DIR__ . '/Config/config.php', 'vtiger'
);
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->app->bind('clystnet-vtiger', function () {
return new Vtiger();
});
config([
'config/vtiger.php',
]);
}
}
这是我的主要包类
<?php
namespace Clystnet\Vtiger;
use Storage;
use Illuminate\Support\Facades\Config;
class Vtiger
{
protected $url;
protected $username;
protected $accesskey;
public function __construct() {
// set the API url and username
$this->url = Config::get('vtiger.url');
$this->username = Config::get('vtiger.username');
$this->accesskey = Config::get('vtiger.accesskey');
}
...
在我的课堂上,我正在做一个var_dump($this->url)
并且它没有读取正确的配置文件。
如何将其设置为使用正确的?
更新
这是我的自定义配置文件和包正在阅读的文件
return [
'url' => 'path/to/vtiger/webservice',
'username' => '',
'accesskey' => '',
];
答案 0 :(得分:2)
我遇到了同样的问题(联系人:是我的包裹)
VIMP :指定 package_name.php 作为您的配置文件名(例如: contact.php )
步骤1:首先,将“ mergeConfigFrom()”方法移至“ register()”方法
public function register()
{
$this->mergeConfigFrom(
__DIR__.'/config/contact.php','contact'
);
}
第2步:从config文件夹中删除已发布的配置文件
第3步:使用vendor:publish重新发布
php artisan vendor:publish
第4步:清除缓存
php artisan cache:clear
php artisan config:clear
第5步:现在您可以访问配置值
$value = config('contact.defaults.send_email_to');
步骤6:我的配置文件是
<?php
return [
"default"=>[
"send_email_to" => "mj@abc.com"
]
];
答案 1 :(得分:1)
正如docs所说,你应该把它放在register()方法上,如:
public function register()
{
// use the vendor configuration file as fallback
$this->mergeConfigFrom(
__DIR__ . '/Config/config.php', 'vtiger'
);
...
}
这应解决问题。
BTW你需要关注多维数组,因为文档说:
此方法仅合并配置数组的第一级。如果 您的用户部分定义了一个多维配置数组, 缺少的选项将不会合并。