CakePHP 2.7 GoogleChart插件

时间:2015-11-08 16:37:13

标签: cakephp plugins

首先,对不起,如果我在这个问题上寻求帮助,但我已经在这方面工作了将近一天。我搜索了这个网站,并找到了一个类似于我的问题的帖子,但我无法让它工作。

无论如何,我正在使用CakePHP 2.x,我需要通过图表显示报告。我看到了CakePHP CakePHP GoogleCharts Plugin by Scott Harwell的这个插件。我一步一步地做了一切,不知怎的,我的观点一直空洞。我确定这不是因为文件冲突所以我决定制作一个新的CakePHP项目,不幸的是,它没有用。

以下是我的代码:

控制器:

<?php
App::uses('AppController', 'Controller');
App::uses('GoogleCharts', 'GoogleCharts.Lib');

class ChartsController extends AppController {

    public $uses = array('Student');
    public $helpers = array('GoogleCharts.GoogleCharts');


    public function test_chart(){
        $student= $this->Student->getStudentAges();

        $studentAgesChart= new GoogleCharts();
        $studentAgesChart->type('LineChart');
        $studentAgesChart->options(array('title' => "Student Ages"));
        $studentAgesChart->columns(array(
            //Each column key should correspond to a field in your data array
            'name' => array(
                'type' => 'string',        
                'label' => 'Student Name'
            ),
            'age' => array(
                'type' => 'number',
                'label' => 'Student Age'
            )
        ));

        foreach($student as $row){
            $studentAgesChart->addRow(array('age' => $row['Student']['age'], 'name' => $row['Student']['name']));
        }

        $this->set(compact('studentAgesChart'));
        debug($studentAgesChart);
    }
}
?>

查看:

<div id="chart_div" >
    <?php 
        $this->GoogleCharts->createJsChart($studentAgesChart); 

    ?>
</div>

调试($ studentAgesChart):

object(GoogleCharts) {
    [private] type => 'LineChart'
    [private] columns => array(
        'name' => array(
            'type' => 'string',
            'label' => 'Student Name'
        ),
        'age' => array(
            'type' => 'number',
            'label' => 'Student Age'
        )
    )
    [private] rows => array(
        (int) 0 => array(
            (int) 0 => 'Student 1',
            (int) 1 => '17'
        ),
        (int) 1 => array(
            (int) 0 => 'Student 2',
            (int) 1 => '16'
        )
    )
    [private] options => array(
        'width' => (int) 400,
        'height' => (int) 300,
        'title' => 'Student Ages',
        'titleTextStyle' => array(
            'color' => 'red'
        )
    )
    [private] callbacks => array()
    [private] div => 'chart_div'
}

型号:

public function getStudentAges(){
        $student_ages = $this->find('all',
            array(
                'order' => array('Student.name' => 'ASC'),
                'limit' => 3,
                'fields' => array(
                    'Student.name',
                    'Student.age'
                )
            )
        );

        return $student_ages;
    }

我看到它的方式,它不包含任何错误,但我的视图是空的。

1 个答案:

答案 0 :(得分:0)

@Scrappy,当您在页面上查看源代码时,您是否看到DOM中包含的任何输出(JavaScript或HTML)?或者,该插件根本没有生成任何内容?如果您确实看到添加了JavaScript代码,那么您的页面是否在控制台中报告JS错误,这可能会阻止图表正确加载?如果您没有看到JS代码,那么您可能没有在引导程序文件中加载插件。

该网页是否可在公共互联网上查看?

该插件在几年内没有看到我的更新,但有一些开发人员已经分叉并为CakePHP 3.0更新了它。但是,除非谷歌的某些内容发生了变化,否则这个版本应该仍然可以正常工作,我相信如果是这样的话我会听说过。