He puesto un par de variables personalizadas en mi aplicación / config / parameters.yml.
parameters:
api_pass: apipass
api_user: apiuser
Necesito acceder a estos desde mi controlador, y he intentado buscarlos con
$this->get('api_user');
desde mi archivo controlador. Cuando intento esto, recibo este mensaje de error:
You have requested a non-existent service "api_user".
¿Cuál es la forma correcta de hacer esto?
symfony
symfony-2.3
Bohr
fuente
fuente
get
método en el controlador también usa el contenedor, pero solo puede obtener servicios de un contenedor, no parámetros. NecesitasgetParameter
obtener parámetros.$this->getContainer()->getParameter('api_user');
me sale un error grave: Llame al método indefinido .. Longpath .. \ Controller :: getContainer ().$this->hasParameter()
aún no funciona.The Clean Way - 2018+, Symfony 3.4+
Desde 2017 y Symfony 3.3 + 3.4 hay una forma mucho más limpia: fácil de configurar y usar.
En lugar de utilizar el antipatrón de contenedor y servicio / localizador de parámetros, puede pasar parámetros a la clase a través de su constructor . No se preocupe, no es un trabajo que requiera mucho tiempo, sino más bien configurar una vez y olvidar el enfoque.
¿Cómo configurarlo en 2 pasos?
1)
app/config/services.yml
2. Cualquiera
Controller
¡Actualización instantánea lista!
En caso de que use un enfoque anterior, puede automatizarlo con Rector .
Lee mas
Esto se llama inyección de constructor sobre el enfoque del localizador de servicios .
Para leer más sobre esto, consulte mi publicación Cómo obtener el parámetro en Symfony Controller the Clean Way .
(Está probado y lo mantengo actualizado para la nueva versión principal de Symfony (5, 6 ...)).
fuente
Te envío un ejemplo con swiftmailer:
parámetros.yml
servicios:
la clase del servicio:
fuente
En Symfony 4, puedes usar
ParameterBagInterface
:y en
app/config/services.yaml
:A mí me funciona tanto en el controlador como en las clases de formulario. Se pueden encontrar más detalles en el blog de Symfony .
fuente
$meetupApiKey
que sé qué esperar un poco mejor que en$parameterBag
Puedes usar:
Para más información te recomiendo que leas el documento:
http://symfony.com/doc/2.8/service_container/parameters.html
fuente
En Symfony 4.3.1 uso esto:
services.yaml
FrontController.php
fuente
$this->getParameter('foo')
. Eso es lo que hice para que funcione en SF 4.8.También puedes usar:
Visite http://symfony.com/doc/current/service_container/parameters.html
fuente