具有数据库值的动态邮件配置 [Laravel]
我已经在我的Laravel应用程序中创建了一个服务提供商。这将缓存数据库中的设置表。SettingsServiceProvider
$settings = $cache->remember('settings', 60, function() use ($settings)
{
return $settings->pluck('value', 'name')->all();
});
config()->set('settings', $settings);
settings
桌子:
我能够像这样回显表中的值:
{{ config('settings.sitename') }} //returns Awesome Images
这在App\Http\Controllers
问题:
我试图回显这个值,就像这样:App\config\mail.php
'driver' => config('settings.maildriver'),
'host' => config('settings.mailhost'),
但是我得到这个错误:
Missing argument 1 for Illuminate\Support\Manager::createDriver()
更新:
我创建了一个新的服务提供商来覆盖Mail中的设置.php如下所示:MailServiceProvider
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Config;
class MailServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
Config::set('mail.driver', config('settings.maildriver'));
Config::set('mail.host', config('settings.mailhost'));
Config::set('mail.port', config('settings.mailport'));
Config::set('mail.encryption', config('settings.mailencryption'));
Config::set('mail.username', config('settings.mailusername'));
Config::set('mail.password', config('settings.mailpassword'));
}
}
但我仍然得到同样的错误!
有没有办法在创建 swiftmailer 传输之前动态覆盖默认邮件配置(例如,配置存储在数据库中)?app/config/mail.php