将Laravel blade中的@include包含到Javascript变量中?

5
在 Laravel 5 的 blade 模板中,我有一个 <script> 部分。
在此部分中,我需要将变量设置为来自另一个 blade 模板的字符串。
我尝试了类似以下的写法:
<script>
  var a = "@include 'sometext.blade.php' ";
</script>

但是这显然行不通。
此外,包含的刀片可以包含单引号和双引号,因此需要以某种方式进行转义,否则Javascript将无效。
有任何想法吗?
1个回答

7

在使用DataTables时,我需要类似的功能,而且需要通过jQuery注入附加的HTML。

首先,我创建了一个帮助函数,使用了这个(来自将PHP字符串传递给JavaScript变量(并转义换行符)):

function includeAsJsString($template)
{
    $string = view($template);
    return str_replace("\n", '\n', str_replace('"', '\"', addcslashes(str_replace("\r", '', (string)$string), "\0..\37'\\")));
}

然后在你的模板中,你可以这样做:
$('div.datatable-toolbar').html("{!! includeAsJsString('sometext') !!}");

包含 sometext.blade.php Blade 模板,并对引号进行转义并删除换行符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接