ブレードでLaravel.env変数にアクセスする


89

ブレードJavaScriptで使用するために.envファイルに保存したいくつかのAPIキーを取得しようとしています。次のような2つのキーを追加しました。

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

ブレードでは、Google MapsAPIとOverheidIOAPIキーを使用する必要があります。カスタム.env変数のフォーマットを間違えた場合に備えて、デフォルトの.env変数の1つを取得しようとしました。

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

誰かが私がブレードのグーグルマップAPIとoverheidioAPIキーを呼び出すのを手伝ってもらえますか?


12
いじくり回して実行php artisan config:clearしてテストenv('APP_ENV')してみてください。私にとってはlocal文字列を返します。
Alexey Mezenin 2017年

アレクセイありがとう!php artisan config:clearトリックをしました。
アンナジェニーン2017年

@Alexey Mezenin、Answerとしてコメントを投稿しても問題ありませんか?私はSOの使用にかなり慣れておらず、ルールについてあまり明確ではありません。
マニアン2017年


@YevgeniyAfanasyevその質問は私の複製です、私は前にそれを尋ねました...
アンナジェニーン

回答:


111

.envまたはデータベースフォルダーを変更した後、またはその他の変更が原因でLaravelが期待どおりに機能しない場合の、最も重要な5つのコマンド。ここに完全な説明があります: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
時々の正確な理由は、Laravel 5.5にはハードキャッシングシステムがあります
DeepeshThapa18年

2
良いものが、注意、ENV(「APP_ENV」)は生産に失敗し、参照stackoverflow.com/a/57626957/4820095
ndberg

1
@ndbergは、コマンドを使用するときでphp artisan config:cache、私はそのコマンドを使用していません。読んでください。
学習者

こんにちは@ndberg私はこの質問へのあなたの答えを二重にレビューしました(上のコメントのリンク)そしてあなたはphp artisan config:cache@Learnerの言及として言及します。しかし、不足しているコマンドを追加するために学習者の回答を編集する必要があるのか​​、それとも間違いを犯したのかはわかりません。明確にしてください。
ギレルモガルシア

@Learnerは正しいです、彼は彼の答えでそれを使用しません、そしてそれは必要ではありません。しかし、私はすべてのgooglerの概要を説明したかっただけです。通常、本番環境ではconfig:cacheを使用し、最終的には「env( 'APP.ENV')」という質問で使用されている呼び出しで問題が発生します。だから、それはこの答えへの追加でした。
ndberg

32

私はそれを次のように実装しました:

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

次のコマンドを実行することをお勧めします。 composer self-update


2
構成キャッシュが有効になっている場合、これは失敗します。使用config代わりに
ncatnow

2
次のように書くことができます@if(App::environment('production'))
MarvinRabe20年

Laravel 7.1以降からは、([ '開発'、 'ローカル'、 'などなど']).... @endenv @env使用することができます
ジェームズを

20

非常に重要

すべてのenv()のように:env('APP_ENV')呼び出しは本番環境では機能しません(を使用する場合php artisan config:cache

何を使うの?
-設定ファイルでのみenv()を使用します
-環境をチェックするためにApp :: environment()を使用します(.envのAPP_ENV)。
-他のすべての環境変数にはconfig( 'app.var')を使用します。config( 'app.debug')
-独自のENV変数用に独自の設定ファイルを作成します。例:
.env内:

MY_VALUE=foo

config app /myconfig.phpの例

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

コードでのアクセス:

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

詳細はこちらをご覧ください


1
@ndbergがここで言うことは重要です:use env() only in config files。これがこの質問に対する最良の答えです。
Pathros

8

アプリの環境を取得したい場合は、これを試してください:

{{App::environment()}}

私は他の変数を試していません。


4

config /フォルダー以外の場所でenv()を使用すると問題が発生します。そこでenvを使用してから、アプリの他の部分でconfig()を使用します


4

ドキュメントへのリンクは次のとおりです:https//laravel.com/docs/6.x/configuration#retrieveing-environment-configuration

以下のサンプルでは、​​開発環境にいるときに実際のエラーを吐き出しますが、他の環境にいる場合は一般的なメッセージを表示します。

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

4

.env構成ファイル内の値に直接アクセスし、config()ヘルパー を使用して構成ファイルからどこからでも(コントローラー、ビュー)値にアクセスする必要があります

。例:

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

詳細については、laravelのドキュメントからの構成キャッシュを参照してください。


4

Laravel 7.11以降、ブレードテンプレートで@env('')and@production()ディレクティブを使用できます。

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

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

または

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

LaravelBladeのドキュメントも参照してください。



2

ここで値を取得します:config/app.php


ブレード内:

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

クラス/コントローラー内:

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



0

私も.envファイルから値を取得するのに問題がありました、それから私はこれをしました、そしてそれは助けました:

  1. envファイルをチェックして、正しい値を指定したかどうかを確認してください。
  2. 次に、.envファイルからその変数を使用しているブレードまたはコントローラーを確認します。
  3. 上記の両方の手順が正しく行われた場合は、次の手順を実行する必要があります-

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.