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?


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


@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

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


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Í


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.


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


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.




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

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

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


0

Puede volverse envidiable de la siguiente manera:

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

referir enlace


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 .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.