Zugriff auf Laravel .env-Variablen im Blade

88

Ich versuche, einige API-Schlüssel, die ich in meiner ENV-Datei gespeichert habe, für die Verwendung im Blade-Javascript zu erhalten. Ich habe zwei Schlüssel hinzugefügt wie:

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

In Blade muss ich die Google Maps-API und den OverheidIO-API-Schlüssel verwenden. Ich habe versucht, eine der Standard-.env-Variablen abzurufen, nur für den Fall, dass ich die benutzerdefinierten .env-Variablen falsch formatiert habe:

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

Könnte mir jemand helfen, den Google Maps API- und Overheidio API-Schlüssel im Blade aufzurufen?

Anna Jeanine
quelle
12
Versuchen Sie, im Basteln zu laufen php artisan config:clearund zu testen env('APP_ENV'). Für mich gibt es localString zurück.
Alexey Mezenin
Vielen Dank, Alexey! php artisan config:clearhat den Trick gemacht.
Anna Jeanine
@Alexey Mezenin, ist es nicht in Ordnung, wenn Sie Ihren Kommentar als Antwort posten?. Ich bin ziemlich neu in der Verwendung von SO und nicht sehr klar über die Regeln.
Manian
Mögliches Duplikat von Laravel 5.3 - env ​​() gibt immer null zurück
Jewgenij Afanasjew
@ YevgeniyAfanasyev diese Frage ist ein Duplikat von mir, ich habe es vorher gestellt ...
Anna Jeanine

Antworten:

111

Fünf wichtige Befehle, wenn Ihr Laravel nach einigen Änderungen in .env oder im Datenbankordner oder aufgrund anderer Änderungen nicht wie erwartet funktioniert. Hier finden Sie eine vollständige Erklärung: 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
Lerner
quelle
1
Genau aus diesem Grund hat Laravel 5.5 manchmal ein hartes Caching-System
Deepesh Thapa,
2
Gutes Zeug, aber Aufmerksamkeit, env ('APP_ENV') wird in der Produktion fehlschlagen, siehe stackoverflow.com/a/57626957/4820095
ndberg
1
@ndberg das ist, wenn Sie den Befehl verwenden php artisan config:cacheund ich diesen nicht benutze. Lesen Sie bitte.
Lerner
Hallo @ndberg, ich habe Ihre Antwort auf diese Frage (Link im obigen Kommentar) doppelt überprüft und Sie werden php artisan config:cacheals @ Lerner erwähnt. ABER ich bin nicht sicher, ob die Antwort des Lernenden bearbeitet werden muss, um den fehlenden Befehl hinzuzufügen, oder ob Sie einen Fehler gemacht haben. Bitte klären Sie es.
Guillermo Garcia
@Learner hat recht, er verwendet es nicht in seiner Antwort und es wird nicht benötigt. Aber ich wollte nur für alle Googler skizzieren: Normalerweise verwenden wir in der Produktion config: cache, und schließlich wird der Aufruf, wie er in der Frage "env ('APP.ENV')" verwendet wird, Probleme verursachen. Es war also nur eine Ergänzung zu dieser Antwort.
Ndberg
31

Ich habe es folgendermaßen implementiert:

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

Meine Empfehlung ist, den folgenden Befehl auszuführen: composer self-update

Armando Cordova
quelle
2
Dies schlägt fehl, wenn das Konfigurations-Caching aktiviert ist. Verwenden Sie configstattdessen
ncatnow
2
Kann geschrieben werden als@if(App::environment('production'))
Marvin Rabe
18

SEHR WICHTIG

Alle env () mögen: env('APP_ENV')ruft WON'T WORK in der Produktion auf (wenn Sie verwenden php artisan config:cache)

Was ist zu verwenden?
- Verwenden Sie env () nur in Konfigurationsdateien.
- Verwenden Sie App :: environment () zum Überprüfen der Umgebung (APP_ENV in .env).
- Verwenden Sie config ('app.var') für alle anderen env-Variablen, z. config ('app.debug')
- Erstellen Sie eigene Konfigurationsdateien für Ihre eigenen ENV-Variablen. Beispiel:
In Ihrer .env:

MY_VALUE=foo

Beispiel config app / myconfig.php

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

Zugriff in Ihrem Code:

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

Weitere Details finden Sie HIER

ndberg
quelle
1
Was @ndberg hier sagt, ist der Schlüssel : use env() only in config files. Dies ist die beste Antwort auf diese Frage.
Pathros
8

Wenn Sie die Umgebung der App erhalten möchten, versuchen Sie Folgendes:

{{App::environment()}}

Ich habe keine anderen Variablen ausprobiert.

Jnanaranjan
quelle
4

Es verursacht Probleme, env () an einer anderen Stelle als im Ordner config / zu verwenden. Verwenden Sie dort env und dann config () in den anderen Teilen der App

Alex
quelle
4

Hier ist ein Link zur Dokumentation: https://laravel.com/docs/6.x/configuration#retrieving-environment-configuration

Im folgenden Beispiel spucke ich den tatsächlichen Fehler aus, wenn ich mich in meiner Entwicklungsumgebung befinde, gebe aber eine generische Meldung, wenn ich mich in einer anderen Umgebung befinde.

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

Sie sollten nur .envdirekt in Konfigurationsdateien auf Werte zugreifen und dann von überall (Controller, Ansichten) aus Konfigurationsdateien mit dem config()Helfer auf sie zugreifen.

Beispiel:

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

Weitere Informationen finden Sie unter Konfigurations-Caching aus der Laravel-Dokumentation.

Medard Mandane
quelle
3
php artisan config:clear

sollte es beheben

Luca C.
quelle
1

Werte hier abrufen: config/app.php


in Klinge:

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

in Klasse / Controller:

config('app.name', 'default value here')
Mhar Daniel
quelle
1

Seit Laravel 7.11 können Sie die Anweisungen @env('')und @production()in Blade-Vorlagen verwenden:

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

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

oder

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

Siehe auch in der Laravel Blade-Dokumentation .

Attila Fulop
quelle
0

Dieser Befehl sollte geschrieben werden, nachdem Sie die ENV-Datei bearbeitet haben, um auf einfache Weise auf Variablen zugreifen zu können

php artisan config:cache
Ahmed Mahmoud
quelle
0

Ich hatte auch Probleme, Wert aus der .env-Datei zu erhalten, dann tat ich dies und es half:

  1. Überprüfen Sie die env-Datei und prüfen Sie, ob Sie den richtigen Wert angegeben haben.
  2. Überprüfen Sie dann das Blade oder den Controller, in dem Sie diese Variable aus der ENV-Datei verwenden.
  3. Wenn beide Schritte oben richtig sind, müssen Sie nur diese Schritte ausführen -

PHP Artisan Konfiguration: Clear
PHP Artisan Cache: Clear
PHP Artisan Ansicht: Clear
PHP Artisan Route: Clear
Composer Dump-Autoload

ABHISHEK SHUKLA
quelle
0

Sie können auf folgende Weise bene verifizierbar werden:

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

siehe Link

hammad khan
quelle