Eu coloquei algumas variáveis personalizadas no meu app / config / parameters.yml.
parameters:
api_pass: apipass
api_user: apiuser
Preciso acessá-los do meu controlador e tentei buscá-los com
$this->get('api_user');
de dentro do meu arquivo do controlador. Quando tento isso, recebo esta mensagem de erro:
You have requested a non-existent service "api_user".
Qual é a maneira correta de fazer isso?
symfony
symfony-2.3
Bohr
fonte
fonte
get
método no controlador também usa o contêiner, mas ele só pode obter serviços de um contêiner, não de parâmetros. Você precisagetParameter
obter parâmetros.$this->getContainer()->getParameter('api_user');
obter erro fatal: Ligue para o método indefinido .. Longpath .. \ Controller :: getContainer ().$this->hasParameter()
ainda não está funcionando.O Caminho Limpo - 2018+, Symfony 3.4+
Desde 2017 e Symfony 3.3 + 3.4, há uma maneira muito mais limpa - fácil de configurar e usar.
Em vez de usar o contêiner e o antipadrão de localizador de serviço / parâmetro, você pode passar parâmetros para a classe via seu construtor . Não se preocupe, não é um trabalho demorado, mas configure uma vez e esqueça a abordagem.
Como configurá-lo em 2 etapas?
1
app/config/services.yml
2. Qualquer
Controller
Pronto para atualização instantânea!
Caso você use uma abordagem mais antiga, você pode automatizá-la com o Rector .
consulte Mais informação
Isso é chamado de abordagem de injeção de construtor sobre localizador de serviços .
Para ler mais sobre isso, confira meu post Como obter parâmetros no Symfony Controller de maneira limpa .
(Ele foi testado e eu o mantenho atualizado para a nova versão principal do Symfony (5, 6 ...)).
fonte
Envio-lhe um exemplo com o swiftmailer:
parameters.yml
Serviços:
a classe do serviço:
fonte
No Symfony 4, você pode usar o
ParameterBagInterface
:e em
app/config/services.yaml
:Funciona para mim nas classes controller e form. Mais detalhes podem ser encontrados no blog do Symfony .
fonte
$meetupApiKey
$parameterBag
Você pode usar:
Para mais informações, recomendo que você leia o documento:
http://symfony.com/doc/2.8/service_container/parameters.html
fonte
No Symfony 4.3.1 eu uso isso:
services.yaml
FrontController.php
fonte
$this->getParameter('foo')
. Foi o que fiz para fazê-lo funcionar no SF 4.8.Você também pode usar:
Visite http://symfony.com/doc/current/service_container/parameters.html
fonte