Как получить параметры сервиса внутри контроллеров Symfony?

Скажем, у меня есть приложение / config / parameters.yml, которое содержит

parameters:
database_driver:   pdo_mysql
...
nacho_image:
upload: true
progress: false
key: secret_id

Теперь я хотел бы получить upload, progress, key в моем контроллере, но делаю

$this->get('upload');
$this->get('nacho_image.upload');
$this->get('nacho.image.upload');
$this->getParameter('nacho.upload');
$this->getParameter('acho_image.upload.upload');

не работает …

0

Решение

Вы не можете напрямую получить вложенный параметр. Вы должны получить родительский ключ, и вы получите все содержимое в виде массива

$nachoImageConfig = $this->getParameter('nacho_image');
$nachoImageUpload = $nachoImageConfig['upload'];

Из документа (http://symfony.com/doc/current/service_container/parameters.html):

Используется нотация — это просто соглашение Symfony, облегчающее чтение параметров. Параметры являются просто плоскими элементами значения ключа, они не могут быть организованы во вложенный массив

Вот почему в большинстве конфигурационных файлов записи в разделе «параметры:» полностью определены следующим образом:

parameters:

...

nacho_image.upload: true
nacho_image.progress: false
nacho_image.key: secret_id
2

Другие решения

Вы получаете эту ошибку, потому что ваш файл .yml плохо отформатирован. Ваш nacho_image параметр не находится в пределах диапазона части параметров, но на том же level, так что вы не можете получить к нему доступ через параметры.

Отредактируйте ваши параметры, как показано ниже, затем вы можете получить доступ к своим параметрам.

parameters:
database_driver:   pdo_mysql
...
nacho_image:
upload: true
progress: false
key: secret_id

Для всего остального смотрите ответ @ CROZET.

Если вам нужно получить доступ к значению из конфигурации, это не установлено в parameters раздел, вы можете сделать это так, как описано в этот ответ.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector