【问题标题】:passing an array from controller to js in laravel在laravel中将数组从控制器传递给js
【发布时间】:2019-01-06 12:13:30
【问题描述】:

我在我的索引页中创建了一条 morris 行,我正在尝试从我的控制器向它传递数据 控制器:

$chartData=  DB::table('transactions')
        ->select('v_type',DB::raw("MONTH(transaction_created_at)"),DB::raw('sum(v_value)'))
        ->groupby('v_type',DB::raw("MONTH(transaction_created_at)"))
        ->get();

  return view('layouts/dashboard/index', ['tickets' => $tickets , 'types'=> $types,'response'=>json_encode($all),'chartData' => $chartData]);

index.blade.php

 .......<div class="row clearfix">

                <div class="card">

                    <div class="header">
                        <h4>Charts</h4>
                    </div>
                        <div class="body">
                            <div id="pushups" class="graph-wrapper" > </div>

                        </div>
                    </div>
                </div>
            </div>
  ......
 @section('extra-script')
    {{Html::script('plugins/jquery-countto/jquery.countTo.js')}}
    {{Html::script('plugins/raphael/raphael.min.js')}}
    {{Html::script('plugins/morrisjs/morris.js')}}
    {{Html::script('plugins/chartjs/Chart.bundle.js')}}
    {{Html::script('plugins/flot-charts/jquery.flot.js')}}
    {{Html::script('plugins/flot-charts/jquery.flot.resize.js')}}
    {{Html::script('plugins/flot-charts/jquery.flot.pie.js')}}
    {{Html::script('plugins/flot-charts/jquery.flot.categories.js')}}
    {{Html::script('plugins/flot-charts/jquery.flot.time.js')}}
    {{Html::script('plugins/jquery-sparkline/jquery.sparkline.js')}}

    {{Html::script('js/pages/index.js')}}

    @endsection

在我的 index.js 中我有这个功能

function initLineChart() {
Morris.Line({
    element: 'pushups',
    data: [
        { day: 'Monday', pushups: 20, beers: 2 },
        { day: 'Tuesday', pushups: 10, beers: 2 },
        { day: 'Wednesday', pushups: 5, beers: 3 },
        { day: 'Thursday', pushups: 5, beers: 4 },
        { day: 'Friday', pushups: 20, beers: 1 }
    ],
    xkey: 'day',
    parseTime: false,
    ykeys: ['pushups','beers'],
    labels: ['Pushups','Beers'],
    lineColors: ['#373651','#E65A26']
});
}

这里我只是将这些数据用于测试,但我想使用$chartdata 来填充这条莫里斯线

chartdata json 看起来像这样

[
  {
    "v_type": "money_value",
    "MONTH(transaction_created_at)": 9,
    "sum(v_value)": 15.5
  },
  {
    "v_type": "tariff_switch",
    "MONTH(transaction_created_at)": 9,
    "sum(v_value)": 3
  },
  .......]

那我该怎么做呢

提前谢谢你。

【问题讨论】:

    标签: javascript php json model-view-controller laravel-5.4


    【解决方案1】:

    您可以像这样将 php 数组传递给 index.js 文件:

    index.blade.php

    <script type="text/javascript">var chart_data =<?php echo chartData; ?>;</script>
    {{Html::script('js/pages/index.js')}}
    

    可以在 index.js 文件中访问变量 chart_data

    【讨论】:

    • 太棒了!这对我帮助很大!但是你可以使用 laravelcollective {!! $charData !!} 这就是我使用的方式!非常感谢。
    猜你喜欢
    • 2021-12-30
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 2021-06-11
    • 1970-01-01
    • 2015-09-18
    相关资源
    最近更新 更多