将数据从控制器传递到视图到脚本 - LARAVEL

时间:2018-04-13 10:46:04

标签: laravel laravel-5 highstock

我需要将一个变量从控制器传递给视图,在脚本中使用它并配置Highstock图。我有日期转换和数组使用的问题。不幸的是,数据未包含在图表中。 我在视图中正确地接收了数据,但我认为我们需要通过json_encode或其他来“格式化”它。 你能告诉我为什么以及如何解决这个问题?

statistiche.blade.php

@section('content')

<div id="container" style="height: 400px; min-width: 310px"></div>
@stop
@section('css')@stop@section('js')
<script>

        var data = [@php echo $data @endphp];


        // Create the chart
        Highcharts.stockChart('container', {

            rangeSelector: {
                selected: 1
            },

            title: {
                text: 'Richieste ricevute'
            },

            series: [{
                name: 'Richieste ricevute',
                data: data,
                tooltip: {
                    valueDecimals: 2
                }
            }]
        });

</script>
@stop

statisticheController.php

    public function index(){
    /* calcolo il totale delle richieste ricevute */
    $richieste = Richiesta::groupBy(DB::raw('DATE_FORMAT(created_at, "%Y-%m-%d")'))
        ->select(DB::raw('DATE_FORMAT(created_at, "%Y-%m-%d") as data'), DB::raw('count(*) as richieste_totali'))
        ->get();


    foreach($richieste as $richiesta) {

        $data[] = [$richiesta->data, $richiesta->richieste_totali];
    }

    return view('layouts.statistiche', compact( 'data'));
}

1 个答案:

答案 0 :(得分:2)

而不是

var data = [@php echo $data @endphp]

你可以拥有

var data = @json($data);

此外,您还可以回复@php echo $stuff; @endphp

之类的内容,而不是运行{{$stuff}}

检查此文档https://laravel.com/docs/5.6/blade