現在、Laravelアプリケーション内の検索エンジンにAlgoliaを使用しているため、レコードが作成されると、Agoliaデータベースにも送信されます。もちろん、Algoliaデータベースでデータを分離したいローカル開発用のテストセットとライブWebサイト用のプロダクションセットを使用して、JavaScriptデータベースで使用されているAlgoliaデータベースのインデックスを定義しました。
現在のAPP_ENV変数に応じて、現在の環境に応じて変数を変更するにはどうすればよいのでしょうか。明らかに、JavaScriptのif
ステートメントにデータを入れる必要がありますが、JavaScriptで.env変数に適切にアクセスするにはどうすればよいですか?
うまくいけば、誰かが私を助けることができます。
乾杯。
あなたはあなたのビューでjavascript文字列としてenv変数をエコーすることができます:
<script>
var name = '{{ env('NAME') }}';
alert(name);
</script>
そして、あなたの.envファイルは次のようになります:
NAME = Alex
ドキュメントが示唆しているように :.envファイルのキーの前にMIX_
を付けることで、env
変数を簡単に使用できるようになりました。
MIX_SENTRY_DSN_PUBLIC=http://example.com
変数が.env
ファイルで定義されたら、process.env
オブジェクトを介してアクセスできます。
process.env.MIX_SENTRY_DSN_PUBLIC
メインのjsファイルの外部から環境変数にアクセスする場合。次のことができます。
let mix = require('laravel-mix');
require('dotenv').config();
次に:
let my_env_var = process.env.MY_ENV_VAR;
ミックスとdotenv設定が必要な場合はアクセスできます。 :)
方法はたくさんあります。
最善の方法の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で取得することはできますが、実際のWebアプリケーションでこれを行うのは良い方法ではないと思います。
より明確な解決策は、_laracasts/utilities
_パッケージを使用して変数をファイルに送信することです。
_composer require laracasts/utilities
_コマンドを使用してインストールします。
次に、コントローラーの上部に_use JavaScript;
_を追加します。
そして最後に、この方法で変数を送信します:JavaScript::put([ 'foo' => $bar ]);
。