Ich versuche eine E-Mail von einem ContainerAwareCommand
in Symfony2 zu senden. Aber ich bekomme diese Ausnahme, wenn die E-Mail-Vorlage rendern durch:
Ausnahme :
%Vor%Ich habe in GitHub gefunden, dass dieser Helfer das Anfrageobjekt benötigt. Jeder weiß, wie kann ich das Request-Objekt instanziieren?
Sie müssen den Container in den richtigen Bereich setzen und eine (gefälschte) Anfrage stellen. In den meisten Fällen wird dies ausreichen:
%Vor%Die ganze Geschichte ist hier . Wenn Sie die Details wissen möchten, lesen Sie dieses Problem auf github .
Das Problem tritt auf, weil Sie die Funktion asset () in Ihrer Vorlage verwenden.
Standardmäßig verwendet asset () den Request -Dienst, um URLs für Ihre Assets zu generieren (es muss wissen, welcher Basispfad zu Ihrer Website ist oder was ist) der Domain-Name, wenn Sie beispielsweise absolute Asset-URLs verwenden).
Aber wenn Sie Ihre Anwendung über die Befehlszeile ausführen, gibt es keine Anfrage .
Eine Möglichkeit, dies zu beheben, ist die explizite Definition von Basis-URLs für Ihre Assets in config.yml wie folgt:
%Vor%Es ist wichtig, sowohl Ссылка als auch ssl zu definieren, da asset () immer noch vom Anforderungsdienst abhängig ist, wenn Sie eines davon auslassen .
Der (mögliche) Nachteil ist, dass alle URLs zu Assets jetzt absolut sind.
Nach der BetaRide Antwort bin ich auf dem richtigen Weg, aber das war nicht ausreichend. Dann beschwerte es sich: "Es konnte keine URL für die angegebene Route erstellt werden" "da eine solche Route nicht existiert."
Um eine gültige Anfrage zu erstellen, habe ich sie wie folgt geändert, um die Wurzel des Projekts anzufordern:
%Vor%Sie müssen möglicherweise eine andere Route aufrufen (gesicherte root?), root funktionierte für mich gut.
Bonus-Zusatz:
Ich musste so viel Templating / Routing in cli durch Symfony2-Befehle machen, dass ich die Methode initializeContainer()
in AppKernel aktualisiert habe. Es erstellt eine Route zum Stamm der Site, legt den Routerkontext fest und täuscht eine Benutzeranmeldung vor:
Sie brauchen vielleicht nicht den letzten $container->get('router')->getContext()->setBaseUrl($request->getRequestUri());
-Teil, aber ich musste es tun, weil mein Site-Root auf domain.com/siteroot/ war und der Router für die URL-Generierung strip / siteroot / away war.
Tags und Links symfony