ChartJS 错误异常压缩():未定义的变量:9月-第8次

g52tjvyc  于 2022-11-06  发布在  Chart.js
关注(0)|答案(2)|浏览(149)

我做了一个图表,但是当我想显示数据的时候出现了一个问题,为什么它被压缩了?
示例代码控制器:

if(Auth::user()->hasRole('Super Admin')) {
            $user = User::where('id', Auth::user()->id)->first();
            $jumlah_user = User::orderBy('id', 'ASC')->get()->count();

            $data = Verifikasi_tte::join('surat_ttes', 'surat_ttes.id', '=', 'verifikasi_ttes.surat_tte_id')
                ->join('users', 'users.id', '=', 'surat_ttes.user_id')
                ->join('jenis_surat_ttes', 'jenis_surat_ttes.id', '=', 'surat_ttes.jenis_surat_tte_id')
                ->select('surat_ttes.id','surat_ttes.klasifikasi','surat_ttes.no_surat','surat_ttes.tgl_surat','surat_ttes.created_at',
                'jenis_surat_ttes.nama_jenis_surat','users.name','users.opd_id','verifikasi_ttes.status')
                ->get()->groupBy(function($data){
                return Carbon::parse($data->created_at)->format('M');
            });

            $months=[];
            $monthCount=[];
            foreach($data as $month => $values){
                $months[]=$month;
                $monthCount[]=count($values);
            }

            return view('dashboard.admins',  compact('user','jumlah_user', ['data'=>$data,'months'=>$months,'monthCount'=>$monthCount] ));
        }

如果转储中有数据转储,那么为什么compact部分要求sep变量呢?
示例JS图表:

<script type="text/javascript">
    var _ydata=JSON.parse('{!! json_encode($months) !!}');
    var _xdata=JSON.parse('{!! json_encode($monthCount) !!}');
</script>
6xfqseft

6xfqseft1#

下面是你应该做的。不要使用compact,因为它不能有一个数组作为参数。相反,你应该把你所有的数据作为一个数组传递,当在你的视图文件中访问它时,这个数组被分解成不同的变量。
将您的代码调整为:

if(Auth::user()->hasRole('Super Admin')) {
            $view_data['user'] = User::where('id', Auth::user()->id)->first();
            $view_data['jumlah_user'] = User::orderBy('id', 'ASC')->get()->count();

            $view_data['data'] = Verifikasi_tte::join('surat_ttes', 'surat_ttes.id', '=', 'verifikasi_ttes.surat_tte_id')
                ->join('users', 'users.id', '=', 'surat_ttes.user_id')
                ->join('jenis_surat_ttes', 'jenis_surat_ttes.id', '=', 'surat_ttes.jenis_surat_tte_id')->select('surat_ttes.id','surat_ttes.klasifikasi','surat_ttes.no_surat','surat_ttes.tgl_surat','surat_ttes.created_at',
                'jenis_surat_ttes.nama_jenis_surat','users.name','users.opd_id','verifikasi_ttes.status')
                ->get()->groupBy(function($data){
                return Carbon::parse($data->created_at)->format('M');
            });

            $view_data['months']=[];
            $view_data['monthCount']=[];
            foreach($view_data['data'] as $month => $values){
                $view_data['months'][]=$month;
                $view_data['monthCount'][]=count($values);
            }

            return view('dashboard.admins',  $view_data);
        }

现在在你的视图文件中,你可以像这样引用每个变量:{{ $user }}{{ $months }}{{ $jumlah_user }}等等

qyzbxkaa

qyzbxkaa2#

您不能在compact方法中传递带有变量数组的单个变量。您可以在此处执行两个步骤来将每个变量传递到视图。
方法1 =〉您可以在compact中以逗号分隔的列表形式传递每个变量,并通过变量名在前端获取

return view('dashboard.admins', compact('user','jumlah_user','data','months','monthCount' ));

方法2 =〉您可以将单个变量作为不同变量的数组进行传递,如

$view_data['user'][]=$user;
$view_data['jumlah_user'][]=$jumlah_user;
$view_data['months'][]=$month;
$view_data['data'][]=$data;

return view('dashboard.admins', compact('view_data'));

并通过访问变量名在前端正常使用

{{ $user }} {{ $months }} {{ $jumlah_user }}

相关问题