Acessando variáveis ​​.env do Laravel no blade

86

Estou tentando obter algumas chaves de API que armazenei no meu arquivo .env para usar no javascript da lâmina. Eu adicionei duas chaves como:

APP_ENV=local
APP_KEY=////
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
APP_GOOGLE_MAPS=////
APP_OVERHEID_IO=////

Na folha, preciso usar a API do Google Maps e a chave da API OverheidIO. Tentei obter uma das variáveis ​​.env padrão para o caso de ter formatado as variáveis ​​.env personalizadas de forma incorreta:

{{ env('APP.ENV') }} // nothing
{{ env('APP_ENV') }} // nothing
{{ env('APP_ENV'), 'test' }} // returns 'test' 

Alguém poderia me ajudar a chamar a API do google maps e a chave da API overheidio na lâmina?

Anna jeanine
fonte
12
Tente executar php artisan config:cleare testar env('APP_ENV')em mexer. Para mim, ele retorna localstring.
Alexey Mezenin
Obrigado Alexey! php artisan config:clearfez o truque.
Anna Jeanine
@Alexey Mezenin, não há problema se você postar seu comentário como Resposta ?. Eu sou muito novo no uso do SO e não sou muito claro sobre as regras.
manian
Possível duplicata do Laravel 5.3 - env ​​() sempre retorna nulo
Yevgeniy Afanasyev
@YevgeniyAfanasyev essa pergunta é uma duplicata minha, eu perguntei antes ...
Anna Jeanine

Respostas:

109

Cinco comandos mais importantes se o seu Laravel não estiver funcionando como esperado após algumas modificações no .env ou na pasta do banco de dados ou por causa de quaisquer outras modificações. Aqui está a explicação completa: https://www.youtube.com/watch?v=Q1ynDMC8UGg

php artisan config:clear
php artisan cache:clear
composer dump-autoload
php artisan view:clear
php artisan route:clear
Aprendiz
fonte
1
Exatamente o motivo, às vezes, o Laravel 5.5 tem um sistema de cache rígido
Deepesh Thapa
2
coisas boas, mas atenção, env ('APP_ENV') irá falhar na produção, consulte stackoverflow.com/a/57626957/4820095
ndberg
1
@ndberg é quando você usa o comando php artisan config:cachee eu não estou usando aquele. Por favor leia.
Aprendiz de
Olá @ndberg, revi duas vezes sua resposta a esta pergunta (link no comentário acima) e você se refere php artisan config:cachecomo @Learner menções. MAS, não tenho certeza se a resposta do aluno precisa ser editada para adicionar o comando ausente ou se você cometeu um erro. Por favor, esclareça isso.
Guillermo Garcia
@Aprendiz tem razão, ele não usa na sua resposta e não é necessário. Mas eu só queria fazer um esboço para todos os googlers: geralmente em produção, usamos config: cache e, eventualmente, a chamada usada na pergunta: "env ('APP.ENV')" trará problemas. Portanto, foi apenas um acréscimo a essa resposta.
ndberg
29

Eu tenho implementado da seguinte maneira:

@if (env('APP_ENV')!='Production')
Enviroment Test
@endif

Minha recomendação é executar o seguinte comando: composer self-update

Armando Cordova
fonte
1
Isso falhará se o cache de configuração estiver ativado. Use em seu configlugar
ncatnow
1
Pode ser escrito como@if(App::environment('production'))
Marvin Rabe
15

MUITO IMPORTANTE

Todos env () como: as env('APP_ENV')chamadas NÃO FUNCIONARÃO na produção (quando você usar php artisan config:cache)

O que usar?
- use env () apenas em arquivos de configuração
- use App :: environment () para verificar o ambiente (APP_ENV em .env).
- use config ('app.var') para todas as outras variáveis ​​env, ex. config ('app.debug')
- crie seus próprios arquivos de configuração para suas próprias variáveis ​​ENV. Exemplo:
Em seu .env:

MY_VALUE=foo

exemplo config app / myconfig.php

return [
    'myvalue' => env('MY_VALUE', 'bar'), // 'bar' is default if MY_VALUE is missing in .env
];

Acesso em seu código:

config('myconfig.myvalue') // will result in 'foo'

Mais detalhes veja AQUI

ndberg
fonte
O que @ndberg diz aqui é fundamental: use env() only in config files. Esta é a melhor resposta para esta pergunta.
Pathros
8

Se você deseja obter o ambiente do aplicativo, tente o seguinte:

{{App::environment()}}

Não tentei outras variáveis.

Jnanaranjan
fonte
4

Isso causa problemas para usar env () em qualquer lugar diferente da pasta config /. Use env lá e, em seguida, config () nas outras partes do aplicativo

Alex
fonte
4

Você só deve acessar os .envvalores diretamente dentro dos arquivos de configuração e, em seguida, acessá-los de qualquer lugar (controladores, visualizações) dos arquivos de configuração usando o config()helper.

Por exemplo:

.env

TEST_URL=http://test

config / app.php

return [
   'test_url' => env('TEST_URL','http://default.url')
];

resources / views / welcome.blade.php

{{ config('app.test_url')}}

veja o cache de configuração da documentação do laravel para mais informações.

mandana medardo
fonte
3
php artisan config:clear

deveria consertar

Luca C.
fonte
3

Aqui está um link para a documentação: https://laravel.com/docs/6.x/configuration#retrieving-environment-configuration

No exemplo abaixo, expus o erro real quando estou no meu ambiente de desenvolvimento, mas forneço uma mensagem genérica se estiver em qualquer outro ambiente.

@if(App::environment('development'))
    Error: {{ $record->s_error }}
@else
    XML Parsing Error - Please double check that your file is formatted correctly.
@endif
JR Lawhorne
fonte
1

obtenha valores aqui: config/app.php


na lâmina:

{{ config('app.name', 'default value here') }}

na classe / controlador:

config('app.name', 'default value here')
Mhar Daniel
fonte
0

Este comando deve ser escrito depois de editar o arquivo .env para acessar as variáveis ​​de maneira fácil

php artisan config:cache
Ahmed Mahmoud
fonte
0

Eu também estava tendo problemas para obter valor do arquivo .env, então fiz isso e ajudou:

  1. Verifique o arquivo env e veja se você forneceu o valor correto.
  2. em seguida, verifique o blade ou controlador onde você está usando essa variável do arquivo .env.
  3. se as duas etapas acima derem certo, você só precisa seguir estas etapas -

configuração do php artisan: limpar o
cache do artesão do php:
visualizar o
artesão do php limpar: rota do artesão do php limpar: limpar o
compositor dump-autoload

ABHISHEK SHUKLA
fonte
0

Você pode obter env verificável da seguinte maneira:

@if (env('APP_ENV')!='Production')
Enviroment Test
@endif

referir link

Hammad Khan
fonte
0

Desde o Laravel 7.11 , você pode usar as diretivas @env('')e @production()em modelos de blade:

@env('staging')
    // The application is running in "staging"...
@endenv

@env(['staging', 'production'])
    // The application is running in "staging" or "production"...
@endenv

ou

@production
    // Production specific content...
@endproduction

Veja também na documentação do Laravel Blade .

Attila Fulop
fonte