Ответ 1
Вы можете просто отобразить переменную env как строку javascript в вашем представлении:
<script>
var name = '{{ env('NAME') }}';
alert(name);
</script>
И ваш .ENV файл будет выглядеть так:
NAME = Алекс
В настоящее время я использую Algolia для своей поисковой системы в приложении Laravel, поэтому при создании записи она также отправляется в базу данных Agolia. Конечно, я хочу разделить свои данные в базе данных Algolia с набором тестов для локальной разработки и производственным набором для живого веб-сайта. Я определил, какие индексы моей базы данных Algolia используются в файле JavaScript.
Теперь мне интересно, как я реагирую соответственно на мою переменную APP_ENV, чтобы изменить ее в зависимости от моей текущей среды? Очевидно, что мне нужно поместить вещи в оператор if
в моем JavaScript, но как мне сделать, чтобы мой JavaScript правильно обращался к переменным .env?
Надеюсь, кто-нибудь может мне помочь.
Приветствия.
Вы можете просто отобразить переменную env как строку javascript в вашем представлении:
<script>
var name = '{{ env('NAME') }}';
alert(name);
</script>
И ваш .ENV файл будет выглядеть так:
NAME = Алекс
Как видно из документации: теперь вы можете легко использовать переменные env
, добавив префикс ключа в вашем файле MIX_
с помощью MIX_
.
MIX_SENTRY_DSN_PUBLIC=http://example.com
После того, как переменная была определена в вашем файле .env
, вы можете получить доступ через объект process.env
.
process.env.MIX_SENTRY_DSN_PUBLIC
Есть много способов.
Одним из лучших является передача данных с контроллера на представление:
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:
\Session::put('env', $app->environment())
Конечно, вы можете создать выделенный маршрут и получить его с помощью Ajax, но я не думаю, что это хороший способ сделать это в реальном веб-приложении.
Более чистым решением является использование пакета laracasts/utilities
для отправки ваших переменных в ваш файл.
Установите его с помощью команды composer require laracasts/utilities
.
Затем добавьте use JavaScript;
в верхнюю часть вашего контроллера.
И, наконец, отправьте свою переменную следующим образом: JavaScript::put([ 'foo' => $bar ]);
.
При доступе к env vars вне основного файла js. Вы можете сделать следующее:
let mix = require('laravel-mix');
require('dotenv').config();
затем:
let my_env_var = process.env.MY_ENV_VAR;
Требуется микс и конфиг dotenv дает вам доступ. :)