使用来自数据库的值动态配置邮件[Laravel]

6 浏览
0 Comments

使用来自数据库的值动态配置邮件[Laravel]

我在我的Laravel应用程序中创建了一个服务提供者SettingsServiceProvider。它从数据库中缓存了设置表。

$settings = $cache->remember('settings', 60, function() use ($settings)
    {
        return $settings->pluck('value', 'name')->all();
    });
config()->set('settings', $settings);

settings表:

enter image description here

我可以像这样从表中输出值:

{{ config('settings.sitename') }}  //返回“Awesome Images”

这在App\Http\Controllers中的任何blade文件或控制器中都可以正常工作。

问题:

我尝试在App\config\mail.php中输出值,如下所示:

'driver' => config('settings.maildriver'),
'host' => config('settings.mailhost'),

但是我得到了这个错误:

Missing argument 1 for Illuminate\Support\Manager::createDriver()

更新:

我创建了一个新的服务提供者MailServiceProvider来覆盖Mail.php中的设置,如下所示:


但是我仍然得到相同的错误!

是否有任何方法可以在创建swiftmailer传输之前动态覆盖默认的邮件配置(例如,配置存储在数据库中)?

0