Я создал пакет 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' => '',
];
Как документы говорит, что вы должны поместить его в метод register (), например:
public function register()
{
// use the vendor configuration file as fallback
$this->mergeConfigFrom(
__DIR__ . '/Config/config.php', 'vtiger'
);
...
}
Это должно решить проблему.
Кстати, вам нужно позаботиться о многомерных массивах, потому что документы говорят:
Этот метод объединяет только первый уровень массива конфигурации. Если
ваши пользователи частично определяют многомерный массив конфигурации,
пропущенные опции не будут объединены.
Других решений пока нет …