Скажем, у меня есть приложение / 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');
не работает …
Вы не можете напрямую получить вложенный параметр. Вы должны получить родительский ключ, и вы получите все содержимое в виде массива
$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
Вы получаете эту ошибку, потому что ваш файл .yml плохо отформатирован. Ваш nacho_image
параметр не находится в пределах диапазона части параметров, но на том же level
, так что вы не можете получить к нему доступ через параметры.
Отредактируйте ваши параметры, как показано ниже, затем вы можете получить доступ к своим параметрам.
parameters:
database_driver: pdo_mysql
...
nacho_image:
upload: true
progress: false
key: secret_id
Для всего остального смотрите ответ @ CROZET.
Если вам нужно получить доступ к значению из конфигурации, это не установлено в parameters
раздел, вы можете сделать это так, как описано в этот ответ.