在包含为资产的javascript文件中使用Laravel函数

时间:2013-05-19 17:44:15

标签: php javascript jquery laravel blade

假设我有一段jQuery javascript在加载时绑定到 div ,并在该div中动态定义 img 。像这样:

$(document).ready(function() {
    $("#container").html("<img href='/images/myimage.jpg/>');
});

如果我在Laravel视图中使用此内联,我将能够使用 HTML :: image()和Blade模板来指定图像的位置。像这样:

$(document).ready(function() {
    $("#container").html("{{ HTML::image('images/myimage.jpg', 'My image') }}");
});

如果我当时要使用那段javascript,而不是在视图中内嵌它,请将其放在单独的.js文件中,例如 public / js / image.js ,我可以让Laravel将其作为资产加载;

Asset::add('image.js', 'js/image.js');

但是,由于它现在仅作为资产处理,因此Laravel PHP和Blade模板代码都不会被处理,因此我们实际上得到字符串 {{HTML :: image('images / myimage.jpg',生成的html中的“我的图片”)}} ,而不是模板化值。

对于这样的事情有没有好的方法?

2 个答案:

答案 0 :(得分:4)

我在这里这样做。我发现的方式是:

1 - 在视图目录树中创建一个'js'文件,类似于

app\views\javascript\mycustomJS.blade.php

2 - 然后在任何需要的地方呈现:

<script>
    @include('javascript.mycustomJS')
</script>

它是刀片,它将按预期进行处理。

我知道这远非理想,但现在对我有用。 :)

答案 1 :(得分:0)

我认为你可以把它放在一个php文件中。我之前用css做过这个。

Asset::add('image.php', 'js/image.php');