Ответ 1
попробуйте с помощью
<?php $hostname = env("IMAP_HOSTNAME_TEST", "somedefaultvalue"); ?>
В моем .ENV файле у меня есть следующее:
IMAP_HOSTNAME_TEST=imap.gmail.com
[email protected]
IMAP_PASSWORD_TEST=mypw
Теперь я хотел бы использовать их в своем контроллере. Я пробовал это, но без результата:
$hostname = config('IMAP_HOSTNAME_TEST');
Переменная $hostname равна нулю. Как я могу использовать эти конфигурационные переменные в моем контроллере?
попробуйте с помощью
<?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('values.myvalue')
Где "значения" - это имя файла, за которым следует ключ "myvalue" Надеюсь, это поможет
Я думал, что добавлю ответ, чтобы упростить то, что было сказано в прошлом. Только конфигурационные файлы могут получить доступ к переменным env - и затем передать их.
Шаг 1.) Добавьте вашу переменную в ваш файл .env
, т.е.
EXAMPLE_URL="http://google.com"
Шаг 2.) Создайте новый файл внутри папки config
, любое имя, т.е.
config/example.php
Шаг 3.) Внутри этого нового файла я добавляю возвращаемый массив, содержащий эту переменную env.
<?php
return [
'url' => env('EXAMPLE_URL')
];
Шаг 4.) Поскольку я назвал его "example", моя конфигурация "namespace" теперь является примером. Итак, теперь в моем контроллере я могу получить доступ к этой переменной с помощью:
$url = \config('example.url');
Совет - если вы добавите use Config;
в верхней части вашего контроллера вам не нужна обратная косая черта (которая обозначает корневое пространство имен). То есть.
namespace App\Http\Controllers;
use Config; // Added this line
class ExampleController extends Controller
{
public function url() {
return config('example.url');
}
}
--- ВАЖНО --- Не забудьте ввести в консоль php artisan config:cache
после того, как вы создали файл example.php. Файлы конфигурации и переменные кэшируются, поэтому, если вы вносите изменения, вам необходимо очистить этот кеш - то же самое относится и к файлу .env
который изменяется/добавляется.
Все переменные, перечисленные в файле .env
, будут загружены в супер-глобальный $_ENV
PHP, когда ваше приложение получит запрос. Страница настройки конфигурации laravel
$_ENV['yourkeyhere'];
InController
$hostname = $_ENV['IMAP_HOSTNAME_TEST']; (or) $hostname = env('IMAP_HOSTNAME_TEST');
В blade.view
{{$_ENV['IMAP_HOSTNAME_TEST']}}
в Laravel Controlller
public static function mail($param)
{
//$_ENV['yourkeyhere'];
$mailgunsecret = env('MAILGUN_SECRET');
$mailguurl = env('MAILGUN_DOMAIN');
}
в файлах Laravel Blade
@if (env('APP_ENV')!='Production')
Enviroment Test
@endif
must run this commands
php artisan config:clear
php artisan cache:clear
composer dump-autoload
php artisan view:clear
php artisan route:clear
Пример: доступ к переменным Laravel.env в блейде
APP_ENV=local
APP_KEY=////
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
APP_GOOGLE_MAPS=////
APP_OVERHEID_IO=////
{{ env('APP_ENV') }} // returns 'local'
{{ env('APP_URL') }} // returns 'http://localhost'
Вы можете использовать этот формат (протестировано на Laravel 5.5) в моем случае я использовал для получения данных соединений с базой данных и использования на контроллере:
$User = env('DB_USERNAMEchild','');
$Pass = env('DB_PASSWORDchild','');
Второй параметр может быть нулевым или установить любое значение по умолчанию в случае, если DB_USERNAMEchild имеет значение null.
файл .env может быть одним и тем же:
DB_HOST=localhost
DB_DATABASE=FATHERBD
DB_USERNAME=root
DB_PASSWORD=password
DB_DATABASEchild=ZTEST
DB_USERNAMEchild=root
DB_PASSWORDchild=passwordofchild
Лучше поместить ваши конфигурационные переменные в конфигурационный файл.
В вашем случае я бы предложил поместить ваши переменные в config/mail.php как
'imap_hostname' => env('IMAP_HOSTNAME_TEST', 'imap.gmail.com')
и обратиться к ним по
config('mail.imap_hostname')
Сначала он пытается получить значение переменной config в файле .env, и если он не может найти значение переменной в файле .env, он получит значение переменной из config/mail.php
вы не можете получить доступ к переменной env, как это.
внутри .env файла, который вы пишете
IMAP_HOSTNAME_TEST=imap.gmail.com // i am okay with this
Далее в папке конфигурации есть mail.php, вы можете использовать этот файл для кодирования. Как вы работаете с почтовой функциональностью. Вы также можете использовать другой файл.
return [
//..... other declarations
'imap_hostname_test' => env('IMAP_HOSTNAME_TEST'),
//вы также скрываете значение внутри config
];
Вы можете вызвать переменную из контроллера, используя 'config (
Какой бы файл вы ни использовали в папке конфигурации. вам нужно использовать это имя файла (без расширения) + '.' + 'имя переменной' + ')'. В текущем случае вы можете вызвать переменную следующим образом.
$hostname = config('mail.imap_hostname_test');
поскольку вы объявляете переменную внутри mail.php, а имя переменной - imap_hostname_test. вам нужно позвонить, как это. Если вы объявите эту переменную внутри app.php, вам следует вызвать
$hostname = config('app.imap_hostname_test');
Возможно, это не связано, но это может помочь кому-то... в Laravel просто dd (config ('app.env')); и вы увидите "local" или "production"