J'ai mis quelques variables personnalisées dans mon app / config / parameters.yml.
parameters:
api_pass: apipass
api_user: apiuser
Je dois y accéder depuis ma manette et j'ai essayé de les récupérer avec
$this->get('api_user');
à partir de mon fichier de contrôleur. Quand j'essaye ceci, j'obtiens ce message d'erreur:
You have requested a non-existent service "api_user".
Quelle est la bonne façon de procéder?
symfony
symfony-2.3
Bohr
la source
la source
get
méthode du contrôleur utilise également le conteneur, mais elle ne peut obtenir des services qu'à partir d'un conteneur, pas des paramètres. Vous devezgetParameter
obtenir des paramètres.$this->getContainer()->getParameter('api_user');
j'obtiens une erreur fatale: Appel à la méthode indéfinie ..Longpath .. \ Controller :: getContainer ().$this->hasParameter()
ne fonctionne pas encore.La manière propre - 2018+, Symfony 3.4+
Depuis 2017 et Symfony 3.3 + 3.4, il existe un moyen beaucoup plus propre - facile à installer et à utiliser.
Au lieu d'utiliser l'anti-modèle de localisateur de conteneurs et de services / paramètres, vous pouvez passer des paramètres à la classe via son constructeur . Ne vous inquiétez pas, ce n'est pas un travail fastidieux, mais plutôt une approche unique et oublie .
Comment le configurer en 2 étapes?
1.
app/config/services.yml
2. Quelconque
Controller
Mise à niveau instantanée prête!
Si vous utilisez une approche plus ancienne, vous pouvez l' automatiser avec Rector .
Lire la suite
C'est ce qu'on appelle une injection de constructeur sur l' approche du localisateur de services .
Pour en savoir plus à ce sujet, consultez mon article Comment obtenir des paramètres dans Symfony Controller de manière propre .
(Il est testé et je le garde à jour pour la nouvelle version majeure de Symfony (5, 6 ...)).
la source
Je vous envoie un exemple avec swiftmailer:
parameters.yml
prestations de service:
la classe du service:
la source
Dans Symfony 4, vous pouvez utiliser
ParameterBagInterface
:et en
app/config/services.yaml
:Cela fonctionne pour moi dans les classes de contrôleur et de formulaire. Plus de détails peuvent être trouvés dans le blog Symfony .
la source
$meetupApiKey
je sais à quoi m'attendre un peu mieux que dans$parameterBag
Vous pouvez utiliser:
Pour plus d'informations je vous recommande de lire la doc:
http://symfony.com/doc/2.8/service_container/parameters.html
la source
Dans Symfony 4.3.1, j'utilise ceci:
services.yaml
FrontController.php
la source
$this->getParameter('foo')
. C'est ce que j'ai fait pour le faire fonctionner dans SF 4.8.Vous pouvez aussi utiliser:
Visitez http://symfony.com/doc/current/service_container/parameters.html
la source