[英]Laravel package reading package config file and not published config file
我創建了一個 Laravel 包,將它上傳到 packagist 並設法使用 composer require 安裝它。
我現在遇到了一個問題,我不知道如何解決它,搜索也無濟於事。
我有一個配置文件,它將默認配置文件發布到 config 目錄。 我對已發布的文件進行了更改,現在我希望我的包使用此配置文件,但它使用的是包中的配置文件,而不是新更新的發布文件。 這是我在 vendor 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' => '',
];
我遇到了同樣的問題(聯系人:是我的包裹)
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.default.send_email_to');
第 6 步:我的配置文件是
<?php
return [
"default"=>[
"send_email_to" => "mj@abc.com"
]
];
正如文檔所說,您應該將其放在 register() 方法上,例如:
public function register()
{
// use the vendor configuration file as fallback
$this->mergeConfigFrom(
__DIR__ . '/Config/config.php', 'vtiger'
);
...
}
這應該可以解決問題。
順便說一句,您需要注意多維數組,因為文檔說:
此方法僅合並配置數組的第一級。 如果您的用戶部分定義了多維配置數組,則不會合並缺少的選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.