2016-02-28 10 views
6

Attualmente sto usando algolia per il mio motore di ricerca all'interno di un'installazione di laravel, quindi ogni volta che viene creato un record viene anche inviato al database di agolia. Ovviamente voglio separare i miei dati nel database di algolia con un set di test per lo sviluppo locale e un set di produzione per il sito live. Ho definito quali indici del mio database di algolia vengono utilizzati in un file javascript.Come accedere alle variabili di .env di laravel all'interno di javascript?

Ora mi chiedo come reagire di conseguenza alla mia variabile APP_ENV per modificarlo in base al mio ambiente corrente? Ovviamente ho bisogno di inserire delle cose in una dichiarazione if nel mio javascript, ma come faccio a far sì che il mio javascript acceda correttamente alle variabili .env?

Speriamo che qualcuno possa darmi una mano.

Cheers.

+1

È possibile creare una risorsa restful per recuperare le variabili di ambiente. Quindi inviare una richiesta Ajax ad esso. – Alfa

+0

Si noti che è possibile accedere alle variabili di ambiente senza una sorta di elenco di cosa è consentito e cosa no. Sarebbe piuttosto pericoloso ... Visto che la maggior parte delle persone ha accesso al database e al server di posta elettronica lì. –

risposta

14

È appena possibile eco la variabile ENV come una stringa javascript nella vista:

<script> 

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

alert(name); 

</script> 

e il file .env sarebbe simile a questa:

NAME = Alex

+1

Praticamente quello che ho fatto ora. Speravo solo che ci sarebbe stato un modo migliore o pre-fatto dal momento che penso che molte persone potrebbero imbattersi in questo dove è necessario controllare il proprio ambiente in javascript. Grazie per l'aiuto! –

1

Ci sono molti modi.

Uno dei migliori è per passare i dati dal controller alla vista:

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> 

} 

o come questo:

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

Oppure si potrebbe usare Sessions:

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

Di Certo, puoi creare un percorso dedicato e farlo con Ajax, ma non penso che sia un buon modo per farlo nella vita reale applicazione.

1

Un pulitore la soluzione è utilizzare il pacchetto laracasts/utilities per inviare le tue variabili al tuo file.

Installarlo con il comando composer require laracasts/utilities.

Quindi aggiungere use JavaScript; nella parte superiore del vostro controller.

E, infine inviare la variabile in questo modo: JavaScript::put([ 'foo' => $bar ]);.

Problemi correlati