Отображение динамической диаграммы Cakephp 3

#cakephp #charts #cakephp-3.0

Вопрос:

Я хотел бы спросить, как динамически отображать диаграммы на html-странице view.ctp

образец диаграммы это ссылка на образец диаграммы http://gionkunz.github.io/chartist-js/

на странице контроллера я узнал о методе из потока вопросов здесь, и это нормально для контроллера, не знаю, как отобразить его на html-странице для диаграмм

  $series = $this->Orders->find('list', [
            'keyField' => 'month',
            'valueField' => 'price',
            'fields'=>[
                'month' => 'MONTHNAME(created_at)',
                'price' => 'SUM(price)'
            ],
            'group' => ['month'],
            'order'=>['MONTHNAME(created_at)'=>'ASC'],
        ])
        ->where(['user_id' => $this->authUser['id']])
        ->toArray();

        $months = json_encode(array_keys($series));
        $amounts = json_encode(array_values($series));

        $this->set('months', $months);
        $this->set('amounts', $amounts);
        
        $this->set(compact('series'));
 

страница отображения Html, которую я добавил в класс div, казалась добавленной неправильно

    <div class="widget-content tab-content bg-white p-20">
                <div class="ct-chart tab-pane active" id="scoreLineToDay"></div>

            
                <script>
                    new Chartist.Line('.ct-chart', {
                        labels: [<?= json_encode($months) ?>],
                        series: [
                            [<?= json_encode($amounts) ?>]
                        ]
                    }, {
                        low: 0,
                        showArea: true
                    });
                </script>


                <div class="ct-chart tab-pane" id="scoreLineToWeek"></div>
                <div class="ct-chart tab-pane" id="scoreLineToMonth"></div>

 

кто-нибудь может показать мне, как это показать?

Большое спасибо!

Комментарии:

1. Вы дважды кодируете данные в формате JSON. Сравните ваши выходные данные с документацией, чтобы понять разницу, упаковка данных во вложенный массив, вероятно, тоже неверна.

2. привет, ndm, спасибо за ваш ответ, это проблема, которую я не могу решить в выходные, не могли бы вы показать мне правильный формат?

Ответ №1:

Удалите это json_encode из вашего метода

 $months = array_keys($series);
$amounts = array_values($series);
 

А также в ярлыке и ценности вам это не нужно [] , просто используйте

 labels: <?= json_encode($months) ?>,
 

Комментарии:

1. большое вам спасибо, это работает :-). кстати, мне нравится/я подписался на ваш канал YouTube с прошлого года, и мне нравится учиться на нем.

2. привет, Алимон Карим, у меня возник вопрос по вашему поисковому запросу, основанному на изучении вашего канала YouTube, я опубликую новый вопрос и спрошу ваше мнение