Получить значение среды в контроллере

В моем .ENV файле у меня есть следующее:

IMAP_HOSTNAME_TEST=imap.gmail.com
[email protected]
IMAP_PASSWORD_TEST=mypw

Теперь я хотел бы использовать их в своем контроллере. Я пробовал это, но без результата:

$hostname = config('IMAP_HOSTNAME_TEST');

Переменная $hostname равна нулю. Как я могу использовать эти конфигурационные переменные в моем контроллере?

Ответ 1

попробуйте с помощью

<?php $hostname = env("IMAP_HOSTNAME_TEST", "somedefaultvalue"); ?>

Ответ 2

Не работает в 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" Надеюсь, это поможет

Ответ 3

Я думал, что добавлю ответ, чтобы упростить то, что было сказано в прошлом. Только конфигурационные файлы могут получить доступ к переменным 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 который изменяется/добавляется.

Ответ 5

InController

$hostname = $_ENV['IMAP_HOSTNAME_TEST']; (or) $hostname = env('IMAP_HOSTNAME_TEST');

В blade.view

{{$_ENV['IMAP_HOSTNAME_TEST']}}

Ответ 6

в 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' 

Получить значение среды в контроллере

Ответ 7

Вы можете использовать этот формат (протестировано на 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

Ответ 8

Лучше поместить ваши конфигурационные переменные в конфигурационный файл.

В вашем случае я бы предложил поместить ваши переменные в config/mail.php как

'imap_hostname' => env('IMAP_HOSTNAME_TEST', 'imap.gmail.com')

и обратиться к ним по

config('mail.imap_hostname')

Сначала он пытается получить значение переменной config в файле .env, и если он не может найти значение переменной в файле .env, он получит значение переменной из config/mail.php

Ответ 9

вы не можете получить доступ к переменной 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');

Ответ 10

Возможно, это не связано, но это может помочь кому-то... в Laravel просто dd (config ('app.env')); и вы увидите "local" или "production"