web-dev-qa-db-fra.com

Modifier les paramètres de configuration du service lors de l'exécution

J'utilise mailgun pour envoyer des mails pensés Laravel 5.2. Il a configuré sur config/services.php comme ça:

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

Mais il me faut modifier ces paramètres au moment de l'exécution, avant d'appeler Mail :: send, pour utiliser les paramètres de service corrects. Il doit être changé plusieurs fois pendant l'exécution.

Je ne peux pas le configurer avec le fichier .env , car toutes les données seront extraites de la base de données, où l'utilisateur configure le domaine et le secret.

14
Tiago Gouvêa

Vous pouvez définir les valeurs de configuration de manière dynamique à l'exécution avec config() helper:

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

Je pense que si vous suivez cet exemple vous serez sur la bonne voie.

\Illuminate\Mail\TransportManager.php a une méthode createMailgunDriver() qui consiste à extraire des services d'un emplacement matériel qui ne peut pas être modifié par défaut.

Vous devrez écrire votre propre fournisseur de services, étendre la MailServiceProvider et rouler votre propre transport afin de pouvoir extraire vos paramètres de la base de données comme vous le souhaitez.

0
Jared Eitnier