在JavaScript变量中使用blade

时间:2017-10-17 15:55:12

标签: javascript laravel laravel-5.3 laravel-blade

我今天早上醒来时带着一个愚蠢的问题。你能把刀片放在一个JavaScript变量中吗?

 var NoImg = '{{ asset('img/ni-img.png') }}';

将以字符串形式输出,我只需要输出图像

3 个答案:

答案 0 :(得分:1)

是的,但最好使用json_encode来确保结果输出对JavaScript友好:

var NoImg = {!! json_encode(asset('img/ni-img.png')) !!};

PHP将添加引号(对于字符串),任何必要的转义字符(例如,如果您的文件名中有'),并且还将处理更复杂的数据结构,如数组/对象。< / p>

答案 1 :(得分:0)

是的 - 这将直接将图像的路径注入JS字符串的单引号。

如果您需要将该字符串用作图片,则需要在路径中设置img .src,例如

document.getElementByID('myImage').src = '{{ asset('img/ni-img.png') }}'

答案 2 :(得分:0)

是。 Blade是服务器端模板引擎。如果你有一个刀片视图文件,她将在javascript之前执行。在您的情况下,当从服务器返回html时,NoImg将具有帮助器asset()返回的扩展值。

这样可以正常工作:

<?php
    // variable from your controller...
    $image = 'https://images.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png';
?>

// your js inside of a blade file...
var image = new Image(272, 92);
image.src = '{{ $image }}'; // or asset("path/to/your/image.png")
document.body.appendChild(image);