Monday, August 22, 2016

Change service config parameters at runtime

Leave a Comment

I'm using mailgun to send mails thought Laravel 5.2. It configured on config/services.php like that:

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

But, I need change that settings in run time, before call Mail::send, to use the correct service parameters. It must be changed many times during runtime.

I cannot configure it by .env file, because all data will be get from database, where the user setups the domain and secret.

2 Answers

Answers 1

You can set it dynamically with config() helper:

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

Answers 2

I think if you follow this example you'll be on the right track.

\Illuminate\Mail\TransportManager.php has a method createMailgunDriver() which is pulling services from a hard location that is not changeable by default.

You'll need to write your own service provider, extend the MailServiceProvider and roll your own transport so that you can pull your settings from the db like you want to.

If You Enjoyed This, Take 5 Seconds To Share It

0 comments:

Post a Comment