hol getEnvironment () von einem Dienst

7

In meinem Benachrichtigungsdienst muss ich die Benachrichtigungen per E-Mail senden, aber im Entwickler möchte ich alle E-Mails an eine bestimmte Adresse senden:

%Vor%

Aber das $this->container->get('kernel')->getEnvironment() funktioniert nur in einem Controller.

Ich denke, ich muss ein Argument in meinem Service-Konstruktor hinzufügen:

%Vor%

Aber ich habe keine Informationen darüber gefunden

Thx

    
Paul 03.10.2016, 22:28
quelle

2 Antworten

17

Es ist nicht notwendig, den Behälter zu injizieren. In der Tat ist es keine gute Idee, Container zu injizieren, da Sie Ihre Klasse von DI abhängig machen.

Sie sollten den Umgebungsparameter injizieren:

services.yml

%Vor%

NotificationService.php

%Vor%     
rokas 04.10.2016, 06:05
quelle
2

Der Grund, warum Sie in einem Controller $ this- & gt; -Container erhalten können, ist, dass er in den Controller eingefügt wird, den Sie erweitern.

Sie könnten beispielsweise den Container injizieren und in Ihrem Konstruktor einrichten.

services.yml

%Vor%

NotificationService.php

%Vor%

Weitere Informationen finden Sie unter Dependency-Injektion .

BITTE BEACHTEN

Im Allgemeinen ist das Injizieren in den Behälter schlecht und bedeutet, dass es einen besseren Weg gibt, etwas zu tun. In diesem Fall hat Symfony bereits die Lösung, die wir zu lösen versuchen.

Geben Sie SwiftMailer ein.

Und speziell der Abschnitt über das Versenden aller Dev-E-Mails an einen Satz Adresse .

Versuchen Sie Swiftmailer einzurichten und fügen Sie Ihrer dev-Konfiguration folgendes hinzu:

app / config / config_dev.yml

%Vor%     
Alex L 03.10.2016 23:10
quelle

Tags und Links