Я поместил несколько пользовательских переменных в мой app / config / parameters.yml.
parameters:
api_pass: apipass
api_user: apiuser
Мне нужно получить доступ к ним с моего контроллера, и я попытался получить их с
$this->get('api_user');
из моего файла контроллера. Когда я пытаюсь это, я получаю это сообщение об ошибке:
You have requested a non-existent service "api_user".
Как правильно это сделать?
get
метод в контроллере также использует контейнер, но он может получать сервисы только из контейнера, а не из параметров. Вам нужноgetParameter
получить параметры.$this->getContainer()->getParameter('api_user');
получить фатальную ошибку: вызов неопределенного метода ..Longpath .. \ Controller :: getContainer ().$this->hasParameter()
пока не работает.Чистый путь - 2018+, Symfony 3.4+
С 2017 года и Symfony 3.3 + 3.4 существует гораздо более понятный способ - простой в настройке и использовании.
Вместо использования контейнера и анти-шаблона локатора сервиса / параметров вы можете передавать параметры в класс через его конструктор . Не волнуйтесь, это не трудоемкая работа, а скорее настройте один раз и забудьте о подходе.
Как настроить это в 2 шага?
1.
app/config/services.yml
2. Любой
Controller
Мгновенное обновление готово!
Если вы используете более старый подход, вы можете автоматизировать его с помощью Rector .
Читать далее
Это называется инжекцией конструктора через поиск сервисов .
Чтобы узнать больше об этом, прочитайте мой пост Как получить параметр в Symfony Controller Чистым способом .
(Он протестирован, и я обновляю его для новой основной версии Symfony (5, 6 ...)).
источник
Я отправляю вам пример с swiftmailer:
parameters.yml
Сервисы:
класс обслуживания:
источник
В Symfony 4 вы можете использовать
ParameterBagInterface
:и в
app/config/services.yaml
:Это работает для меня и в контроллере, и в классах. Более подробную информацию можно найти в блоге Symfony .
источник
$meetupApiKey
я знаю, что ожидать немного лучше, чем в$parameterBag
Ты можешь использовать:
Для получения дополнительной информации я рекомендую вам прочитать документ:
http://symfony.com/doc/2.8/service_container/parameters.html
источник
В Symfony 4.3.1 я использую это:
services.yaml
FrontController.php
источник
$this->getParameter('foo')
. Вот что я сделал, чтобы заставить его работать в SF 4.8.Вы также можете использовать:
Посетите http://symfony.com/doc/current/service_container/parameters.html
источник