Получить значение среды в контроллере
В моем файле .env у меня есть следующее:
IMAP_HOSTNAME_TEST=imap.gmail.com
[email protected]
IMAP_PASSWORD_TEST=mypw
Теперь я хотел бы использовать их в своем контроллере. Я пробовал это, но безрезультатно:
$hostname = config('IMAP_HOSTNAME_TEST');
Переменная $hostname равна нулю. Как я могу использовать эти переменные конфигурации в своем контроллере?
7 answers
Попробуйте сделать это с помощью
<?php $hostname = env("IMAP_HOSTNAME_TEST", "somedefaultvalue"); ?>
Не работает в Laravel 5.3+ если вы хотите попытаться получить доступ к значению с контроллера, как показано ниже, он всегда возвращает значение null
<?php
$value=env('MY_VALUE','default_value');
РЕШЕНИЕ: Скорее вам нужно создать файл в папке конфигурации..скажем values.php а затем напишите коды, как показано ниже
values.php
<?php
return [
'myvalue' => env('MY_VALUE',null),
//add other values as you want
]
Затем получите доступ к значению в вашем контроллере с помощью следующего кода
<?php
$value=\Config::get('credentials.myvalue')
Где "учетные данные" - это имя файла, за которым следует ключ "myvalue" Надеюсь, это поможет
Все переменные, перечисленные в файле .env
, будут загружены в суперглобальный PHP $_ENV
, когда ваше приложение получит запрос.
Проверка страницы конфигурации laravel
$_ENV['yourkeyhere'];
Вы можете использовать этот формат (протестирован на Laravel 5.5) в моем случае я использовал для получения данных подключений к базе данных и использования на контроллере:
$User = env('DB_USERNAMEchild','');
$Pass = env('DB_PASSWORDchild','');
Второй параметр может быть равен нулю или установить любое значение по умолчанию в случае, если DB_USERNAMEchild равно нулю.
Ваш файл .env может быть таким же:
DB_HOST=localhost
DB_DATABASE=FATHERBD
DB_USERNAME=root
DB_PASSWORD=password
DB_DATABASEchild=ZTEST
DB_USERNAMEchild=root
DB_PASSWORDchild=passwordofchild
Контролер
$hostname = $_ENV['IMAP_HOSTNAME_TEST']; (or) $hostname = env('IMAP_HOSTNAME_TEST');
В blade.view
{{$_ENV['IMAP_HOSTNAME_TEST']}}
Лучше поместить ваши переменные конфигурации в файл конфигурации.
В вашем случае я бы предложил поместить ваши переменные в config/mail.php как
'imap_hostname' => env('IMAP_HOSTNAME_TEST', 'imap.gmail.com')
И ссылаться на них с помощью
config('mail.imap_hostname')
Сначала он пытается получить значение переменной конфигурации в файле .env, и если он не смог найти значение переменной в файле .env, он получит значение переменной из config/mail.php
Может быть не связано, но это может кому-то помочь.... в Laravel просто dd(конфигурация('app.env')); и вы увидите "местное" или "производство"