在刀片模板中填充js数组

Populating js array in blade template

本文关键字:填充 js 数组      更新时间:2023-09-26

我正试图根据phpDB查询的结果构建一个用于flot的javascript数据数组。

当我输出数字($lic->Users)时,这很好,但每当我试图输出字符串时,浏览器中就会出现一个完全空白的页面。

我试过:

  • {{ $lic->CompanyName }}
  • "<?php echo $lic->CompanyName; ?>"
  • {{{ $lic->CompanyName }}}
  • '"'+ <?php echo $lic->CompanyName; ?> +'"'

但当我硬编码它(比如说"CompanyName")时,它构建的条形图(并显示页面)就很好。

var data = 
[
    @foreach($licdata as $lic)
    {
    'label': "{{ $lic->CompanyName }}",
    'data': [
                ["{{ $lic->CompanyName }}", {{ $lic->Users }}], 
                ["{{ $lic->CompanyName }}", {{ $lic->Emps }}]
            ]
    },
    @endforeach
];

我认为这一定与引用/转义js中的字符串有关,但我不知道是什么,有人知道正确的语法是什么吗?

后端的一个更好的解决方案是在数组中构建数据,无论是关联的还是其他的。

然后返回:

return view( 'view_required',[
     'my_var'=> json_encode($array_or_object, JSON_UNESCAPED_SLASHES );
]);

正面:

<script>
    var my_var = {!! $my_var !!};
</script>

这是我的错,我最终使用了:
"<?php echo $lic->CompanyName ?>"
一旦我纠正了潜在的问题(区分大小写的问题),{{ $lic->CompanyName }}也能工作。

使用Fiddler(我无法高度推荐),我发现空白的浏览器页面(只是一个白色页面)是由以下内容导致的:

var data = 
[
    @foreach($licdata as $lic)
    {
    'label': "<!DOCTYPE html
<html>
  <head>

然后加载html(头标签、元标签、css等)

这是我的SQL中的字段名(Companyname)大小写略有不同的结果
MS SQL Server不关心这种情况,而PHP则关心(Companyname vs Companyname)!

一旦php/lavel从结果集中创建对象,字段名就会变成属性,当您访问它们时,它们必须匹配以备不时之需。

始终检查PHP变量/对象的大小写,尤其是当框架正在将它们从记录自动转换为对象(或类似的东西)时。

Easywayhttps://laravel.com/docs/8.x/blade#rendering-json

<script>
     var app = {{ Js::from($array) }};
</script>