Laravel Blade @include 到 Javascript 变量中?

标签 laravel laravel-5 laravel-blade

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

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

我尝试过类似的方法:

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

但这显然行不通。

此外,附带的 Blade 可以包含单引号和双引号,因此需要以某种方式转义这些引号,否则 Javascript 将无效。

有什么想法吗?

最佳答案

最终在使用 DataTables 时需要类似的功能,并且需要在事后通过 jQuery 注入(inject)额外的操作 HTML。

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

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 模板,并转义引号并删除换行符。

关于Laravel Blade @include 到 Javascript 变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37362222/

相关文章:

php - laravel blade 使用 substr 方法禁用转义

Laravel 5.6 env ('APP_BASE_URL')返回null

Laravel Bundle OneAuth 与 Sentry 的兼容性

php - Laravel 输入门面与请求门面

Laravel 5.2 JSON 对带有错误 api_token 的请求的响应

php - 如何通过使用 View 传递的变量来使用 Laravel blade 自定义函数

php - 使用 foreach 循环,如何将所有记录放在彼此下方?

php - 405(不允许的方法)Laravel

mysql - 将两个变量传递给 Laravel 中的方法

javascript - 所有 HTML 字段值的总和不起作用