ब्लेड में लारवेल .env चर तक पहुँच


86

मैं कुछ एपीआई कुंजी प्राप्त करने की कोशिश कर रहा हूं, जिसे मैंने ब्लेड जावास्क्रिप्ट में उपयोग करने के लिए अपनी .env फ़ाइल में संग्रहीत किया है। मैंने दो कुंजियाँ जोड़ी हैं:

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

ब्लेड में मुझे Google मैप्स एपीआई और ओवरहीडियो एपीआई कुंजी का उपयोग करने की आवश्यकता है। मैंने केवल एक डिफ़ॉल्ट .env चर प्राप्त करने की कोशिश की है, जबकि मैंने कस्टम .env चर को गलत स्वरूपित किया है।

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

क्या कोई मुझे गूगल मैप्स एपी और ओवरहीडियो एपि कुंजी को ब्लेड में कॉल करने में मदद कर सकता है?


12
चलाने की कोशिश करें php artisan config:clearऔर env('APP_ENV')टिंकर में परीक्षण करें । मेरे लिए यह localस्ट्रिंग लौटाता है।
एलेक्सी मेजेनिन

धन्यवाद एलेक्सी! php artisan config:clearचाल चली।
अन्ना जीनिन

अगर आप अपनी टिप्पणी उत्तर के रूप में पोस्ट करते हैं, तो @Alexey Mezenin, यह ठीक नहीं है। मैं SO का उपयोग करने के लिए बहुत नया हूं और नियमों के बारे में बहुत स्पष्ट नहीं हूं।
मनिअन


@YevgeniyAfanasyev सवाल यह है कि मेरा एक डुप्लिकेट है, मैंने इससे पहले पूछा ...
अन्ना जीनिन

जवाबों:


109

पांच सबसे महत्वपूर्ण आदेश अगर आपका लारवेल कुछ संशोधनों के बाद .env या डेटाबेस फ़ोल्डर में या किसी अन्य संशोधनों के कारण अपेक्षा के अनुरूप काम नहीं कर रहा है। यहां पूर्ण विवरण दिया गया है: 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
वास्तव में कभी-कभी कारण, लारवेल 5.5 में एक कठिन कैशिंग प्रणाली है
दीपेश थापा

2
अच्छा सामान, लेकिन ध्यान, env ('APP_ENV') उत्पादन में विफल हो जाएगा, देखें stackoverflow.com/a/57626957/4820095
ndberg

1
@ndberg कि जब आप कमांड का उपयोग करते हैं php artisan config:cacheऔर मैं उस एक का उपयोग नहीं कर रहा हूं। कृपया पढ़ें।
शिक्षार्थी

हाय @ndberg मैंने इस प्रश्न के आपके उत्तर की समीक्षा की (ऊपर टिप्पणी में लिंक) और आप php artisan config:cache@Learner उल्लेख के रूप में देखें । लेकिन, मुझे यकीन नहीं है कि यदि लापता कमांड को जोड़ने के लिए शिक्षार्थी के उत्तर को संपादित करने की आवश्यकता है, या यदि आपने कोई गलती की है। कृपया, इसे स्पष्ट करें।
गुइलेर्मो गार्सिया

@ लर्नर सही है, वह अपने जवाब में इसका इस्तेमाल नहीं करता है और इसकी जरूरत नहीं है। लेकिन मैं सिर्फ सभी googler के लिए रूपरेखा तैयार करना चाहता था: आमतौर पर उत्पादन में, हम कॉन्फिगर का उपयोग करते हैं: कैश, और अंततः कॉल का उपयोग प्रश्न में किया गया: "env ('APP.ENV')" परेशानी लाएगा। तो यह सिर्फ इस जवाब के लिए एक अतिरिक्त था।
ndberg

29

मैंने इसे निम्नलिखित तरीके से लागू किया है:

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

मेरी सिफारिश निम्नलिखित कमांड निष्पादित करने के लिए है: composer self-update


1
कॉन्फ़िगरेशन कैशिंग सक्षम होने पर यह विफल हो जाएगा। configइसके बजाय का उपयोग करें
ncatnow

1
के रूप में लिखा जा सकता है@if(App::environment('production'))
मार्विन राबे

15

बहोत महत्वपूर्ण

सभी env () की तरह: env('APP_ENV')कॉल नहीं काम उत्पादन में (जब आप का उपयोग करें php artisan config:cache)

क्या उपयोग करें?
- env ​​() का उपयोग केवल कॉन्फिग फाइलों में करें
- पर्यावरण की जाँच के लिए App :: environment () का उपयोग करें (APP_ENV .env)।
- अन्य सभी एनवी चर के लिए विन्यास ('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'

अधिक जानकारी यहाँ देखें


यहाँ क्या कहते हैं @ndberg कुंजी है use env() only in config files:। यह इस सवाल का सबसे अच्छा जवाब है।
पाथ्र्स

8

अगर आप ऐप का माहौल पाना चाहते हैं तो यह प्रयास करें:

{{App::environment()}}

मैंने अन्य चर की कोशिश नहीं की है।


4

यह कॉन्फ़िगरेशन / फ़ोल्डर की तुलना में कहीं और env () का उपयोग करने के लिए समस्याओं का कारण बनता है। इनव का उपयोग करें और फिर एप्लिकेशन के अन्य भागों में कॉन्फ़िगर करें ()


4

आपको .envकॉन्फ़िगरेशन फ़ाइलों के अंदर सीधे मानों को एक्सेस करना चाहिए , फिर उन्हें config()हेल्पर का उपयोग करके कॉन्फ़िगरेशन फ़ाइलों से हर जगह (नियंत्रकों, विचारों) तक पहुंचें

उदाहरण के लिए:

.env

TEST_URL=http://test

config / app.php

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

संसाधन / विचारों / welcome.blade.php

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

अधिक जानकारी के लिए लार्वा प्रलेखन से विन्यास कैशिंग देखें ।



3

यहाँ प्रलेखन के लिए एक लिंक है: https://laravel.com/docs/6.x/configuration#retrieving-environment-configuration

नीचे दिए गए नमूने में, मैं वास्तविक त्रुटि से बाहर निकलता हूं जब मैं अपने विकास के वातावरण में होता हूं लेकिन किसी अन्य वातावरण में एक सामान्य संदेश देता हूं।

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

1

यहां मान प्राप्त करें: config/app.php


ब्लेड में:

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

कक्षा / नियंत्रक में:

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

0

आसान तरीके से चर का उपयोग करने के लिए .env फ़ाइल को संपादित करने के बाद यह कमांड लिखा जाना चाहिए

php artisan config:cache

0

मुझे .env फ़ाइल से मान प्राप्त करने में भी समस्या हो रही थी, तब मैंने यह किया और इससे मदद मिली:

  1. Env फ़ाइल की जाँच करें और देखें कि क्या आपने सही मूल्य दिया है।
  2. फिर ब्लेड या नियंत्रक की जाँच करें जहाँ आप .vv फ़ाइल से उस चर का उपयोग कर रहे हैं।
  3. यदि ऊपर दिए गए दोनों चरण सही हैं, तो आपको बस इन चरणों को करने की आवश्यकता है -

php कारीगर विन्यास: स्पष्ट
php कारीगर कैश: स्पष्ट
php कारीगर दृश्य: स्पष्ट
php कारीगर मार्ग: स्पष्ट
संगीतकार डंप-ऑटोलॉड



0

Laravel 7.11 के बाद से , आप ब्लेड टेम्प्लेट में @env('')और @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

लारवेल ब्लेड डॉक्यूमेंटेशन में भी देखें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.