You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Blade中PHP变量传递至script标签报错求助

解决Laravel Blade中Script标签调用变量的问题

一、单个变量(如$pass_data)未定义的解决步骤

  1. 确认控制器已正确传递变量到视图
    确保控制器返回视图时,已将目标变量传入,示例代码:
    // 控制器方法
    public function showChart()
    {
        $pass_data = 85; // 实际数据从业务逻辑获取
        $fail_data = 15;
        return view('your-view-name', compact('pass_data', 'fail_data'));
        // 也可使用with方法:return view('your-view-name')->with('pass_data', $pass_data)->with('fail_data', $fail_data);
    }
    
  2. Blade中正确输出变量
    数字类型变量直接用{{ $pass_data }}即可,若需避免转义(如包含特殊字符的字符串),可使用{!! $pass_data !!}。修正后的script代码:
    function drawChart() {
        var data = google.visualization.arrayToDataTable([
            ["Student Pass/Fail", "Count"],
            ["Pass", {{ $pass_data }}],
            ["Fail", {{ $fail_data }}], 
        ]);
        // 后续图表渲染逻辑
    }
    

二、数组在Script标签中循环的解决方案

不能直接在script内用Blade的@foreach生成JS代码,需将PHP数组转为JS可识别的格式:

  1. 控制器传递数组到视图
    // 控制器方法中传递数组
    $studentRecords = [
        ['name' => '张三', 'score' => 90],
        ['name' => '李四', 'score' => 55],
        // 更多业务数据
    ];
    return view('your-view-name', compact('studentRecords'));
    
  2. 在Script中转换并循环数组
    使用json_encode将PHP数组转为JSON格式,再用JS循环处理:
    // 转换PHP数组为JS数组
    var studentRecords = {!! json_encode($studentRecords) !!};
    
    // JS循环遍历数组
    studentRecords.forEach(function(record) {
        console.log(record.name + ': ' + record.score);
        // 执行你的业务逻辑,比如渲染数据或处理图表
    });
    
    若数组包含HTML字符,建议添加参数避免XSS风险:json_encode($studentRecords, JSON_HEX_TAG)

内容的提问来源于stack exchange,提问作者Rahul Kumawat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:55:20