2016-02-28 101 views
6

我目前在laravel安裝中使用algolia作爲我的搜索引擎,所以無論何時創建記錄,它也會發送到agolia數據庫。當然,我想用algolia數據庫中的數據分離本地開發的測試集和生產站點的生產集。我已經定義了我的algolia數據庫的哪些索引正在JavaScript文件中使用。如何訪問JavaScript內部的laravel .env變量?

現在我想知道如何根據我當前的環境對我的APP_ENV變量做出相應的反應?很明顯,我需要把東西放入if語句在我的JavaScript,但我怎麼讓我的JavaScript訪問.env變量正確?

希望有人能幫助我。

乾杯。

+1

您可以創建一個restful資源來獲取您的環境變量。然後發送一個ajax請求給它。 – Alfa

+0

請注意,允許訪問環境變量時不需要列出某種允許和不允許的列表。會很危險...看到大多數人在那裏有數據庫和電子郵件服務器登錄。 –

回答

14

你可以只回聲出環境變量在您的視圖中的JavaScript字符串:

<script> 

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

alert(name); 

</script> 

和你.ENV文件應該是這樣的:

NAME =亞歷克斯

+1

幾乎我現在所做的。我只是希望能有一個更好的或預先制定的方式,因爲我認爲很多人可能會遇到這種情況,你需要用javascript來檢查你的環境。感謝您的幫助! –

1

有很多方法。

其中最好的是從控制器數據傳遞到視圖:

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> 

} 

或像這樣:

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

或者你可以使用會話:

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

中當然,你可以創建專用的路線並通過Ajax獲取,但我認爲這不是一種在現實生活中做到這一點的好方法。應用。

1

更乾淨解決方案是使用laracasts/utilities包將您的變量發送到您的文件。

使用composer require laracasts/utilities命令進行安裝。

然後在控制器的頂部添加use JavaScript;

最後用這種方式發送你的變量:JavaScript::put([ 'foo' => $bar ]);