Как получить доступ к переменным laravel .env внутри javascript?

В настоящее время я использую algolia для своей поисковой системы внутри установки laravel, поэтому при создании записи она также отправляется в базу данных agolia. Конечно, я хочу разделить свои данные в базе данных algolia с набором тестов для локальной разработки и производственным набором для живого сайта. Я определил, какие индексы моей базы данных algolia используются в файле javascript.

Теперь мне интересно, как я реагирую соответственно на мою переменную APP_ENV, чтобы изменить ее в зависимости от моей текущей среды? Очевидно, мне нужно поместить материал в оператор if в моем javascript, но как мне сделать, чтобы мой javascript правильно обращался к переменным .env?

Надеюсь, кто-нибудь может мне помочь.

Приветствия.

9

Решение

Вы можете просто вывести переменную env в виде строки JavaScript в вашем представлении:

<script>

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

alert(name);

</script>

И ваш файл .env будет выглядеть так:

NAME = Alex

21

Другие решения

Как видно из документации: теперь вы можете легко использовать env переменные путем добавления префикса к ключу в вашем файле .env MIX_,

MIX_SENTRY_DSN_PUBLIC=http://example.com

После того, как переменная была определена в вашем .env файл, вы можете получить доступ через process.env объект.

process.env.MIX_SENTRY_DSN_PUBLIC

2

Есть много способов.

Одним из лучших является передача данных из контроллера в представление:

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 ]);,

1
По вопросам рекламы [email protected]