【问题标题】:Interpret variable in Javascript file Laravel解释 Javascript 文件 Laravel 中的变量
【发布时间】:2016-01-05 03:10:29
【问题描述】:

我需要在我的视图中包含一个 js 文件。

但是在这个 js 文件中我需要解释一些 PHP 变量。

其实我是这样做的:

@section('javascript')
    <script>
        alert("{{{test}}}");
    </script>
@stop

但我真的需要这样做:

@section('javascript')
    {!! Html::script('js/test.js') !!}
@stop

test.js:

alert("{{{test}}}");

我需要声明很多变量。所以我的 JS 文件会很大。而且我不想直接在源代码中显示。

我该怎么办? 谢谢!

【问题讨论】:

  • 你说的变量,是javascript变量吗?还是 PHP 的?
  • 这是一个php变量!

标签: javascript laravel include


【解决方案1】:

您只能像这样将变量传递给 javascript:

@section('javascript')
<script>
    var test = {{{$test}}};
</script>
@stop

然后在底部包含的 javascript 文件中,您可以使用它:

alert(test);

让我提一下,这不是处理从 php 到 javascript 的传递变量的好方法。

【讨论】:

  • 是的,为什么不呢!但我需要声明很多变量 x)。在源代码中显示它会很脏。我更喜欢在所有声明中包含一个 js 文件。
  • 变量将显示在页面源代码中,除非您在页面加载后通过 ajax 调用获取它们。如果您想在刀片中清理它,请创建一个接受 $data 数组的部分,循环它并创建所有 javascript 变量,并将该部分包含到所需的视图中。
【解决方案2】:

当我需要做这样的事情时,我通常会在页面上创建一个包含警报信息的元标记。

<meta name="someAlertValue" content="{{{ $test }}}" />

然后你可以很容易地通过 jQuery 来获取它。

var alert_text = $('meta[name=someAlertValue]').attr('content');

我发现这种方法比尝试将 php 变量直接放入您的 javascript 中更清洁和可维护。

【讨论】:

  • 我需要声明很多变量x)。所以head标签会非常大。我更喜欢在 JS 文件中声明变量。不过谢谢!
  • 您可以轻松地将 JSON 存储在 content 属性中,它会一次性包含所有变量。 stackoverflow.com/questions/7322682/…
【解决方案3】:

我遇到了同样的问题,并且想要一个独立的 js,它可以从 config() 甚至从数据库中获取大量变量,多语言,并且可以配置,甚至可以使用查询参数。 也许这是一条艰难的道路,但我已经创建了一条路线:

Route::get('/js-modules/test.js',function(){ return view('js-modules.test');})->name('my_js);

所以在 resources/views/js-modules/test.blade.php 视图中,您可以将您的 js 代码与您的 PHP 代码放在一起。

或者您可以将其路由到控制器并进行更多后台工作。第一次运行时(在浏览器中)看起来有点慢,但第二次请求它将被兑现并作为常规 js 文件检索

现在您可以使用

将其链接到您的任何页面

&lt;script src="{{route('my_js')}}"&gt;&lt;/script&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 2014-10-20
    • 1970-01-01
    • 2015-02-22
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多