Ich habe einige benutzerdefinierte Variablen in meine app / config / parameters.yml eingefügt.
parameters:
api_pass: apipass
api_user: apiuser
Ich muss von meinem Controller aus auf diese zugreifen und habe versucht, sie mit abzurufen
$this->get('api_user');
aus meiner Controller-Datei. Wenn ich das versuche, erhalte ich folgende Fehlermeldung:
You have requested a non-existent service "api_user".
Was ist der richtige Weg, um dies zu tun?
symfony
symfony-2.3
Bohr
quelle
quelle
get
Methode in der Steuerung auch den Container verwendet, jedoch nur Dienste von einem Container abrufen kann, keine Parameter. Sie müssengetParameter
Parameter erhalten.$this->getContainer()->getParameter('api_user');
erhalte ich einen schwerwiegenden Fehler: Aufruf der undefinierten Methode ..Longpath .. \ Controller :: getContainer ().$this->hasParameter()
funktioniert noch nicht.The Clean Way - 2018+, Symfony 3.4+
Seit 2017 und Symfony 3.3 + 3.4 gibt es viel sauberere Wege - einfach einzurichten und zu verwenden.
Anstatt das Anti-Pattern für Container und Service / Parameter Locator zu verwenden, können Sie Parameter über den Konstruktor an die Klasse übergeben . Keine Sorge, es ist keine zeitaufwändige Arbeit, sondern ein einmaliges Einrichten und Vergessen des Ansatzes.
Wie richte ich es in 2 Schritten ein?
1.
app/config/services.yml
2. Beliebig
Controller
Sofortiges Upgrade bereit!
Wenn Sie einen älteren Ansatz verwenden, können Sie ihn mit Rector automatisieren .
Weiterlesen
Dies wird als Konstruktorinjektion über den Dienstlokalisierungsansatz bezeichnet .
Weitere Informationen hierzu finden Sie in meinem Beitrag So erhalten Sie Parameter in Symfony Controller auf saubere Weise .
(Es wurde getestet und ich halte es für die neue Symfony-Hauptversion (5, 6 ...) auf dem neuesten Stand.)
quelle
Ich sende Ihnen ein Beispiel mit swiftmailer:
parameters.yml
Dienstleistungen:
die Klasse des Dienstes:
quelle
In Symfony 4 können Sie Folgendes verwenden
ParameterBagInterface
:und in
app/config/services.yaml
:Es funktioniert für mich sowohl in Controller- als auch in Formularklassen. Weitere Details finden Sie im Symfony-Blog .
quelle
$meetupApiKey
sehe, weiß ich, was mich etwas besser erwartet als in$parameterBag
Sie können verwenden:
Für weitere Informationen empfehle ich Ihnen, das Dokument zu lesen:
http://symfony.com/doc/2.8/service_container/parameters.html
quelle
In Symfony 4.3.1 verwende ich Folgendes:
services.yaml
FrontController.php
quelle
$this->getParameter('foo')
. Das habe ich getan, damit es in SF 4.8 funktioniert.Sie können auch verwenden:
Besuchen Sie http://symfony.com/doc/current/service_container/parameters.html
quelle