Accediendo a las variables .env de Laravel en blade

86

Estoy tratando de obtener algunas claves de API que he almacenado en mi archivo .env para usar en el javascript de la hoja. He agregado dos claves como:

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

En Blade, necesito usar la API de Google Maps y la clave API de OverheidIO. He intentado obtener una de las variables .env predeterminadas en caso de que haya formateado incorrectamente las variables .env personalizadas:

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

¿Podría alguien ayudarme a llamar a la API de Google Maps y a la clave de API de Overheidio en la hoja?

Anna Jeanine
fuente
12
Intenta correr php artisan config:cleary probar env('APP_ENV')en Tinker. Para mí, devuelve una localcadena.
Alexey Mezenin
¡Gracias Alexey! php artisan config:clearHizo el truco.
Anna Jeanine
@Alexey Mezenin, ¿no está bien si publica su comentario como Respuesta? Soy bastante nuevo en el uso de SO y no tengo muy claras las reglas.
manian
Posible duplicado de Laravel 5.3 - env ​​() siempre devuelve nulo
Yevgeniy Afanasyev
@YevgeniyAfanasyev esa pregunta es un duplicado de la mía, la hice antes ...
Anna Jeanine

Respuestas:

109

Los cinco comandos más importantes si su Laravel no funciona como se esperaba después de algunas modificaciones en la carpeta .env o la base de datos o debido a cualquier otra modificación. Aquí hay una explicación 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
fuente
1
Exactamente la razón a veces, Laravel 5.5 tiene un sistema de almacenamiento en caché duro
Deepesh Thapa
2
buenas cosas, pero atención, env ('APP_ENV') fallará en producción, consulte stackoverflow.com/a/57626957/4820095
ndberg
1
@ndberg es cuando usas el comando php artisan config:cachey yo no estoy usando ese. Por favor lee.
Estudiante
Hola @ndberg, revisé dos veces su respuesta a esta pregunta (enlace en el comentario anterior) y se refiere a las php artisan config:cachemenciones de @Learner. PERO, no estoy seguro de si es necesario editar la respuesta del alumno para agregar el comando que falta o si cometió un error. Por favor, aclaralo.
Guillermo García
@Learner tiene razón, no lo usa en su respuesta y no es necesario. Pero solo quería resumir para todos los usuarios de Google: generalmente en producción, usamos config: cache, y eventualmente la llamada como se usa en la pregunta: "env ('APP.ENV')" traerá problemas. Así que solo fue una adición a esta respuesta.
ndberg
29

Lo tengo implementado de la siguiente manera:

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

Mi recomendación es ejecutar el siguiente comando: composer self-update

Armando Córdova
fuente
1
Esto fallará si el almacenamiento en caché de la configuración está habilitado. Úselo en su configlugar
ncatnow
1
Se puede escribir como@if(App::environment('production'))
Marvin Rabe
15

MUY IMPORTANTE

Todo env () como: las env('APP_ENV')llamadas NO FUNCIONAN en producción (cuando lo usa php artisan config:cache)

¿Qué usar?
- use env () solo en archivos de configuración
- use App :: environment () para verificar el entorno (APP_ENV en .env).
- use config ('app.var') para todas las demás variables env, ej. config ('app.debug')
: cree sus propios archivos de configuración para sus propias variables ENV. Ejemplo:
en su .env:

MY_VALUE=foo

ejemplo config app / myconfig.php

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

Accede en tu código:

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

Más detalles ver AQUÍ

ndberg
fuente
Lo @ndberg dice aquí es la clave: use env() only in config files. Esta es la mejor respuesta a esta pregunta.
Pathros
8

Si desea obtener el entorno de la aplicación, intente esto:

{{App::environment()}}

No he probado otras variables.

Jnanaranjan
fuente
4

Causa problemas al usar env () en cualquier otro lugar que no sea la carpeta config /. Use env allí y luego config () en las otras partes de la aplicación

Alex
fuente
4

Solo debe acceder a los .envvalores directamente dentro de los archivos de configuración y luego acceder a ellos desde cualquier lugar (controladores, vistas) desde los archivos de configuración utilizando el config()ayudante

.

.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')}}

consulte el almacenamiento en caché de la configuración de la documentación de laravel para obtener más información.

medard mandane
fuente
3
php artisan config:clear

debería arreglarlo

Luca C.
fuente
3

Aquí hay un enlace a la documentación: https://laravel.com/docs/6.x/configuration#retrieving-environment-configuration

En el siguiente ejemplo, escupo el error real cuando estoy en mi entorno de desarrollo, pero doy un mensaje genérico si estoy en cualquier otro entorno.

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

obtener valores aquí: config/app.php


en la hoja:

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

en clase / controlador:

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

Este comando debe escribirse después de editar el archivo .env para acceder a las variables de manera fácil

php artisan config:cache
Ahmed Mahmoud
fuente
0

También estaba teniendo problemas para obtener valor del archivo .env, luego hice esto y me ayudó:

  1. Verifique el archivo env y vea si ha dado el valor correcto.
  2. luego verifique la hoja o el controlador donde está usando esa variable del archivo .env.
  3. si ambos pasos anteriores van bien, solo necesita seguir estos pasos:

php artisan config: clear
php artisan cache: clear
php artisan view: clear
php artisan route: clear
composer dump-autoload

ABHISHEK SHUKLA
fuente
0

Puede volverse envidiable de la siguiente manera:

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

referir enlace

hammad khan
fuente
0

Desde Laravel 7.11 , puede usar las directivas @env('')y @production()en las plantillas de hoja:

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

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

o

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

Consulte también la documentación de Laravel Blade .

Attila Fulop
fuente