如何在javascript中访问laravel .env变量?

时间:2016-02-28 14:13:42

标签: javascript php laravel environment-variables

我目前在Laravel应用程序中使用Algolia作为我的搜索引擎,所以无论何时创建记录,它都会被发送到Agolia数据库。当然,我想将我在Algolia数据库中的数据与本地开发的测试集和实时网站的生产集分开。我已经定义了我的Algolia数据库的哪些索引在JavaScript文件中使用。

现在我想知道如何根据我当前的环境相应地对我的APP_ENV变量做出反应来改变它?显然我需要在我的JavaScript中将内容放入if语句,但是如何让我的javascript正确访问.env变量?

希望有人可以帮助我。

干杯。

5 个答案:

答案 0 :(得分:21)

您可以在视图中将env变量作为javascript字符串回显:

<script>

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

alert(name);

</script>

你的.env文件看起来像这样:

NAME =亚历

答案 1 :(得分:5)

As the documentation suggest it:您现在可以通过在.env文件中的密钥前面加上env来轻松使用MIX_变量。

MIX_SENTRY_DSN_PUBLIC=http://example.com

.env文件中定义变量后,可以通过process.env对象进行访问。

process.env.MIX_SENTRY_DSN_PUBLIC

答案 2 :(得分:1)

有很多方法。

最好的方法之一是将数据从Controller传递到视图:

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());

或者你可以使用Sessions:

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

当然,您可以创建专用路由并使用Ajax获取它,但我不认为这是在现实生活中的Web应用程序中执行此操作的好方法。

答案 3 :(得分:1)

更简洁的解决方案是使用laracasts/utilities包将变量发送到您的文件。

使用composer require laracasts/utilities命令安装它。

然后在控制器顶部添加use JavaScript;

最后以这种方式发送您的变量:JavaScript::put([ 'foo' => $bar ]);

答案 4 :(得分:0)

如果从主js文件外部访问env var。您可以执行以下操作:

let mix = require('laravel-mix');
require('dotenv').config();

然后:

let my_env_var = process.env.MY_ENV_VAR;

需要混合和dotenv配置可让您访问。 :)