Laravel刀片@include到Javascript变量?

时间:2016-05-21 11:16:58

标签: laravel laravel-5 blade laravel-blade

在Laravel 5刀片模板中,我有一个<script>部分。

在本节中,我需要将变量设置为来自另一个刀片模板的字符串。

我尝试过类似的事情:

<script>
  var a = "@include 'sometext.blade.php' ";
</script>

但这显然不起作用。

此外,包含的刀片可以包含单引号和双引号,因此需要以某种方式对其进行转义,否则Javascript将无效。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

在使用DataTables时需要类似的功能,并且需要在事后通过jQuery注入HTML的其他操作。

首先我created a helper function(来自Pass a PHP string to a JavaScript variable (and escape newlines)):

var blogs = context.Blogs
    .Include(blog => blog.Posts)
    .Where(b => b.BlogId == 1 && b.Posts.PostId == 2);

然后在您的模板中,您可以执行以下操作:

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') !!}"); 刀片模板,其中包含引号转义和删除换行符。