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

Tia*_*vêa 18 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')
    ],
Run Code Online (Sandbox Code Playgroud)

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

无法通过.env文件配置它,因为所有数据都将从数据库获取,用户在其中设置域和密码.

Ale*_*nin 31

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

config(['services.mailgun' => $arrayWithNewSettings]);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢@alexey-mezenin,当我第一次在运行时设置它时,它运行良好。但是当我改变它时,如果我得到了配置值,那没关系,但是当邮件使用它时,只有第一个值在那里......只有第一个配置留在那里。我需要强制服务重新加载配置... (2认同)
  • @ astroanu,`Config :: set($ key,$ value)`与`config(['services.mailgun'=> $ arrayWithNewSettings]);相同。要获取值,您使用的是`config('services.mailgun');`。再次阅读文档。 (2认同)
  • 我想它确实如此。没看到 (2认同)