Bonjour,

je souhaiterai faire des graphiques simples (barre) avec CakePhp 3 en y intégrant un plugin ou autre.
Je suis arrivé à ce plugin : https://github.com/scottharwell/GoogleCharts
Une fois installé dans le répertoire plugins, mon fichier boostrap.php modifié pour chargé le plugin, mon controler et ma vue modifié, j'ai modifié les fichiers sources en ajoutant le namespace et les lignes "use". Lorsque j'appelle ma vue, j'obtient le message d'erreur suivant :
Error: Class 'GoogleCharts\Lib\GoogleCharts' not found

Si quelqu'un a une piste ou une autre méthode pour générer des graphique , je suis preneur.

Merci

6 réponses


Bonjour.
Le plugin que tu veux utiliser, est pour CakePHP V2 et non pour la V3.
Il n'utilise pas les namespaces (par exemple).
Regardes :

Requirements

  • CakePHP 2.0+
  • PHP 5.3+

Donc, à moins que tu modifies le plugin pour qu'il puisse être utilisé par la V3, il t'est inutile.

Pour la V3, tu as par exemple celui-ci : CakePHP 3.0 plugin for Chart.js integration.

Merci de ton retour, en effet l'outil n'est pas approprié à la version.
Je suis allé voir ton lien, ça me semble être simple.
Alors voici mes actions : récupération de Charts.js placé dans le webroot/js, appel dans mon template.
récupération du plugin, modification du boostrap.php

J'ai suivi le readme pour l'exemple, et lors de l'appel j'obtiens une erreur :
Error: Call to undefined function ChartJs\View\Helper\uc_first()

Une idée ?

Essaies tout simplement de remplacer uc_first de la ligne 517 par la fonction ucfirst.
Donc :

$chartType = (strtolower($data['Chart']['type'] === 'doughnut')) ? 'Pie' : uc_first(strtolower($data['Chart']['type']));

Par :

$chartType = (strtolower($data['Chart']['type'] === 'doughnut')) ? 'Pie' : ucfirst(strtolower($data['Chart']['type']));

Merci, c'est en effet ce que je viens de faire.
Je n'ai plus d'erreur mais pour le moment rien ne s'affiche.
Je continue à chercher

Je bloque un peu.
en affichant les sources générée, je trouve bien un bloc de script généré :
entre balse script

//<![CDATA[
var chartCanvas = document.createElement("canvas");
chartCanvas.id = "myBarChart";
chartCanvas.className = "myChartJs";
chartCanvas.width = 750;
chartCanvas.height = 300;
...
//]]>

Mais rien à l'affichage à part l'aparition d'un ascenseur vertical.
As tu une piste, paramétrage, options, un div à créer dans la vue, un bloc CSS à déclaré, ...

Merci de ton aide.

Bonjour,

Je me permet de te répondre concernant la librairie Google Charts.

Je l'utilise et tout fonctionne très bien de mon côté. Je te donne un exemple d'un affichage d'un camembert repertoriant les capacités libre, libérée et utilisée d'un DD:

 <script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(drawChart);
  function drawChart() {

    var data = google.visualization.arrayToDataTable([
      ['Task', 'Hours per Day'],
      ['Libre', <?php echo $libre;?>],
      ['Utilisé', <?php echo $util;?>],
      ['Libéré', <?php echo $libere;?>]

    ]);

    var options = {
      width: 320,
      height: 174,
      'legend':'bottom',
      colors:['#7ead43','#4f6c2a', 'darkorange']
    };

    var chart = new google.visualization.PieChart(document.getElementById('piechart'));

    chart.draw(data, options);
  }
</script>
<div id="piechart" ></div>

Merci de me dire si ça te va :)