2016-02-28 23 views
6

Tôi hiện đang sử dụng algolia cho công cụ tìm kiếm của tôi bên trong một cài đặt Laravel nên bất cứ khi nào một bản ghi được tạo, nó cũng được gửi đến cơ sở dữ liệu agolia. Ofcourse Tôi muốn tách riêng dữ liệu của tôi trong cơ sở dữ liệu algolia với một testet cho phát triển địa phương và một bộ sản xuất cho trang web trực tiếp. Tôi đã xác định các chỉ số của cơ sở dữ liệu algolia của tôi đang được sử dụng trong một tập tin javascript.Làm thế nào để truy cập các biến laren .env bên trong javascript?

Bây giờ tôi tự hỏi làm thế nào để tôi phản ứng tương ứng với biến APP_ENV của tôi để thay đổi tùy thuộc vào môi trường hiện tại của tôi? Rõ ràng tôi cần phải đưa công cụ vào một tuyên bố nếu trong javascript của tôi nhưng làm thế nào để tôi làm cho javascript của tôi truy cập các biến .env đúng cách?

Hy vọng ai đó có thể giúp tôi.

Chúc mừng.

+1

Bạn có thể tạo tài nguyên an toàn để tìm nạp biến môi trường của mình. Sau đó gửi yêu cầu ajax đến nó. – Alfa

+0

Lưu ý, cho phép các biến môi trường được truy cập mà không có một số loại danh sách như những gì được cho phép và những gì không được phép. Sẽ khá nguy hiểm ... Thấy như hầu hết mọi người có cơ sở dữ liệu và máy chủ email đăng nhập ở đó. –

Trả lời

14

Bạn chỉ có thể echo ra biến env như là một chuỗi javascript theo quan điểm của bạn:

<script> 

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

alert(name); 

</script> 

Và tập tin .env của bạn sẽ trông như thế này:

NAME = Alex

+1

Khá nhiều những gì tôi đã làm bây giờ. Tôi chỉ hy vọng sẽ có một cách tốt hơn hoặc được thực hiện từ khi tôi nghĩ rằng rất nhiều người có thể đang chạy vào điều này, nơi bạn cần phải kiểm tra môi trường của bạn trong javascript. Cảm ơn bạn đã giúp đỡ! –

1

Có rất nhiều cách.

Một trong những tốt nhất là để truyền dữ liệu từ Controller cho xem:

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> 

} 

hay như thế này:

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

Hoặc bạn có thể sử dụng phiên:

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

Trong số tất nhiên bạn có thể tạo ra tuyến đường chuyên dụng và nhận nó bằng Ajax, nhưng tôi không nghĩ đó là một cách hay để làm điều này trong cuộc sống thực ứng dụng.

1

Một dọn dẹp giải pháp là sử dụng gói laracasts/utilities để gửi các biến của bạn tới tệp của bạn.

Cài đặt bằng lệnh composer require laracasts/utilities.

Sau đó, thêm use JavaScript; ở đầu bộ điều khiển của bạn.

Và cuối cùng gửi biến của bạn theo cách này: JavaScript::put([ 'foo' => $bar ]);.

Các vấn đề liên quan