在运行时更改服务配置参数

时间:2016-08-10 12:50:52

标签: laravel laravel-5 laravel-5.2

我使用mailgun发送了Laravel 5.2的邮件。它在config / services.php上配置如下:

    'mailgun' => [
        'domain' => env('mailgun_domain','mydomain.com'),
        'secret' => env('mailgin_secret','my-secret-key-132152345423')
    ],

但是,我需要在调用Mail :: send之前更改运行时的设置,以使用正确的服务参数。它必须在运行时多次更改。

无法通过.env文件对其进行配置,因为所有数据都将来自数据库,用户可在此设置域和密码。

2 个答案:

答案 0 :(得分:24)

您可以使用config()帮助程序在运行时动态设置配置值:

config(['services.mailgun' => $arrayWithNewSettings]);

答案 1 :(得分:0)

我认为如果你按照this example进入正确的轨道。

\Illuminate\Mail\TransportManager.php有一个方法createMailgunDriver(),它从默认情况下无法更改的硬位置提取服务。

您需要编写自己的服务提供商,扩展MailServiceProvider并推送自己的传输,以便您可以按照自己的方式从数据库中提取设置。