2016-02-28 19 views
6

Obecnie używam algolia dla mojej wyszukiwarki wewnątrz instalacji laravel, więc za każdym razem, gdy tworzony jest rekord, jest ona również wysyłana do bazy danych agolia. Oczywiście chcę oddzielić moje dane z bazy danych w algolii zestawem testów dla rozwoju lokalnego i zestawu produkcyjnego dla witryny na żywo. Zdefiniowałem, które indeksy mojej bazy danych algolia są używane w pliku javascript.Jak uzyskać dostęp do zmiennych laravel .env w javascript?

Zastanawiam się teraz, w jaki sposób mogę odpowiednio zareagować na zmienną APP_ENV, aby zmienić ją w zależności od mojego obecnego środowiska? Oczywiście muszę umieścić rzeczy w instrukcji if w moim javascript, ale jak mogę zrobić javascript dostęp do zmiennych .env prawidłowo?

Mam nadzieję, że ktoś może mi pomóc.

Pozdrawiam.

+1

Możesz utworzyć spokojny zasobnik do pobierania zmiennych środowiskowych. Następnie wyślij do niego żądanie ajax. – Alfa

+0

Należy zauważyć, że dostęp do zmiennych środowiskowych jest możliwy bez listy dozwolonych elementów, a co nie. Byłoby to dość niebezpieczne ... Widząc, jak większość ludzi ma tam swoje bazy danych i adresy e-mail. –

Odpowiedz

14

Można tylko echo na zmienną env jako ciąg JavaScript w widoku:

<script> 

var name = '{{ env('NAME') }}'; 

alert(name); 

</script> 

a plik .env będzie wyglądać następująco:

NAME = Alex

+1

Prawie co teraz zrobiłem. Miałem tylko nadzieję, że będzie lepszy lub wcześniejszy sposób, ponieważ myślę, że wiele osób może borykać się z tym, że musisz sprawdzić swoje środowisko w javascript. Dzięki za pomoc! –

1

Istnieje wiele sposobów.

Jednym z najlepszych jest do przekazywania danych z kontrolera do widoku:

if ($app->environment('local')) 
{ 
    // Here you can generate some <script></script> code or you could just generate 
    // hidden div like <div id="environment" style="display:none">local</div> 

} 

lub jak to:

return view('myView')->with('env', $app->environment()); 

Albo można użyć sesje:

\Session::put('env', $app->environment()) 

Of Oczywiście możesz utworzyć dedykowaną trasę i zdobyć ją za pomocą Ajax, ale nie sądzę, że to dobry sposób na zrobienie tego w prawdziwym życiu. podanie.

1

Czystsze rozwiązaniem jest użycie pakietu laracasts/utilities, aby przesłać zmienne do pliku.

Zainstaluj go za pomocą polecenia composer require laracasts/utilities.

Następnie dodaj use JavaScript; u góry kontrolera.

Na koniec wyślij zmienną w ten sposób: JavaScript::put([ 'foo' => $bar ]);.