Page 1 sur 2

Zend framework et Jpgraph

Posté : 14 août 2010, 21:20
par rokia
Salut tout le monde,
je veux créer des graphes (tq des camemberts..) dans mon application.Pour ce faire ,j'ai installé Jpgraph. Je vous montre ici le code que j'ai fait dans mon controlleur et dans la vue correspondante :
ServeurController/superviserAction:

Code : Tout sélectionner

<?php class Supervision1Controller extends Zend_Controller_Action { public function init() { $contextSwitch = $this->_helper->getHelper('contextSwitch'); $contextSwitch->addContext('png', array( 'suffix' => 'png', 'headers' => array('Content-Type' => 'image/png'), )); $contextSwitch->addActionContext('superviser','png'); $contextSwitch->initContext(); } public function indexAction() { } public function superviserAction() { header("Content-type:image/png ;charset=utf-8"); $this->_helper->viewRenderer->setNoRender(); $this->_helper->layout->disableLayout(); date_default_timezone_set('Australia/Sydney'); include(APPLICATION_PATH . '/jpgraph/src/jpgraph.php'); include(APPLICATION_PATH . '/jpgraph/src/jpgraph_pie.php'); include(APPLICATION_PATH . '/jpgraph/src/jpgraph_pie3d.php'); $tab=array(); $sortie=shell_exec('df'); file_put_contents('sortie.txt',$sortie); $ligne=file('sortie.txt'); $taille=count($ligne)-1; $pos=strpos($ligne[0],'Use%'); for($i=1; $i<=$taille;$i++) { $str=substr($ligne[$i],$pos,3); if(strlen($str)<3) { $str=trim($str,'%'); } $str=trim($str); $tab[$i]=intval($str); } $graph=new PieGraph(500,300); $graph->title->Set('Taux d\'utilisation du disque dur'); $graph->img->SetMargin(40,140,20,40); $p1=new PiePlot3D(40,60,21,33); $graph->Add($p1); $graph->Stroke(); $image="APPLICATION_PATH .'controllers/Supervision1Controller.php'"; echo '<img src= "$image"/>'; } }
Mais quand je l'execute , j'obtiens l'erreur:
L'image "http://Jessica.stage/serveur/superviser" ne peut pas etre affichée car elle contient des erreurs.
Si quelqu'un a une idée sur la cause de cette erreur .je suis preneuse (ça fait 4 jours que je cherche mais sans aucun résultat!!)
merci d'avance.

Re: Zend framework et Jpgraph

Posté : 14 août 2010, 21:26
par stealth35
c'est pas le controller qui faut affiché mais la vue...

Re: Zend framework et Jpgraph

Posté : 14 août 2010, 21:27
par xTG
Tu boucles indéfiniment sur ton image en fait avec ce code. ^^

Il te faut une fonction pour la générer (elle sera appelée dans la balise img) et une pour afficher la Vue qui contiendra la balise img.

Re: Zend framework et Jpgraph

Posté : 14 août 2010, 21:33
par stealth35
Tu boucles indéfiniment sur ton image en fait avec ce code. ^^
qu'est ce qui boucle ?

Re: Zend framework et Jpgraph

Posté : 14 août 2010, 21:39
par xTG
$graph->Stroke();
Génère le rendu donc affiche l'image.
Et dans la même page nous avons un un echo avec la balise img pointant sur la même fonction, d'où retour au début du code.

Bien sûr c'était une façon de parler puisque le code n'est pas exécuté deux fois (heureusement que les machines sont pas toujours bêtes 8-| )

Re: Zend framework et Jpgraph

Posté : 14 août 2010, 21:42
par stealth35
$graph->Stroke();
Génère le rendu donc affiche l'image.
Et dans la même page nous avons un un echo avec la balise img pointant sur la même fonction, d'où retour au début du code.

Bien sûr c'était une façon de parler puisque le code n'est pas exécuté deux fois (heureusement que les machines sont pas toujours bêtes 8-| )
appeler Supervision1Controller.php ca fera rien, encore moins en local

Re: Zend framework et Jpgraph

Posté : 14 août 2010, 23:09
par xTG
Au temps pour moi, je n'ai jamais utilisé ce framework. :)

Re: Zend framework et Jpgraph

Posté : 14 août 2010, 23:28
par stealth35
Au temps pour moi, je n'ai jamais utilisé ce framework. :)
même sans avoir utilisé ce framework, lancer un fichier qui contient juste une classe ca fait rien :wink:

Re: Zend framework et Jpgraph

Posté : 15 août 2010, 00:13
par rokia
Qu'est ce que vous voulez dire par il faut afficher la vue et non pas le controller?: J'ai déjà essayé de faire ça dans le fichier de vue superviser.png.phtml:

Code : Tout sélectionner

<xhtml> <head><meta http-equiv="Content-type" content="text/html; charset=utf-8" /></head> <body><img src="Supervision1Controller.php"/></body> </xhtml>
Qu'est ce que vous me proposez comme solution,j'ai vraimant essayé pleins de trucs mais en vain.
Merci à l'avance pour vos réponses

Re: Zend framework et Jpgraph

Posté : 15 août 2010, 00:19
par stealth35
tu sais comment marche le Zend Framework ?

Re: Zend framework et Jpgraph

Posté : 15 août 2010, 02:42
par rokia
:D ,je suis débutante ,je travaille sur mon premier projet en zend.Mais dans quel sens tu me pose cette question??
Selon ton Post précédent ,je peux te répondre que zend framework se base sur le principe de MVC ,çàd qu'il s'agit de séparer les models des vues et des controllers.et en se limitant à mon cas ,un controlleur qui s'appelle Supervision1 peut contenir plusieurs actions ,et pour chaque action il y a une vue correspondante!! Tu me conseilles donc d'afficher la vue et non pas le controller?? si oui ,est ce que tu peux me dire comment le faire proprement ? (car j'ai essayé de le faire avec plusieurs méthodes ,mais ça donne aucun résultat .J'ajoute qu'avec l'instruction $this->_helper->viewRenderer->setNoRender(); la vue est désactivée , n'est ce pas?)

Re: Zend framework et Jpgraph

Posté : 15 août 2010, 16:24
par stealth35
tu sais avec quelle adresse afficher une vue ?

Re: Zend framework et Jpgraph

Posté : 15 août 2010, 18:20
par rokia
J'ai pas compris ta question? est ce que tu peux poser les questions en se reférant à mon code ,ainsi je peux savoir où est la faute?!!!

Re: Zend framework et Jpgraph

Posté : 15 août 2010, 18:32
par stealth35
J'ai pas compris ta question? est ce que tu peux poser les questions en se reférant à mon code ,ainsi je peux savoir où est la faute?!!!
y'a pas de code, pour affice ta vue tu fais comment http://localhost/truc/blabla ?

Re: Zend framework et Jpgraph

Posté : 17 août 2010, 03:56
par rokia
salut!!
Voilà ,j'ai refait mon code.Je me retrouve avec un autre comportement mais toujours avec la meme erreur:

Code : Tout sélectionner

<?php class Supervision1Controller extends Zend_Controller_Action { public function init() { } public function indexAction() { } public function superviserAction() { $this->_helper->layout->disableLayout(); date_default_timezone_set('Australia/Sydney'); include(APPLICATION_PATH . '/jpgraph/src/jpgraph.php'); include(APPLICATION_PATH . '/jpgraph/src/jpgraph_pie.php'); include(APPLICATION_PATH . '/jpgraph/src/jpgraph_pie3d.php'); $tab=array(); $sortie=shell_exec('df'); file_put_contents('sortie.txt',$sortie); $ligne=file('sortie.txt'); $taille=count($ligne)-1; $pos=strpos($ligne[0],'Use%'); for($i=1; $i<=$taille;$i++) { $str=substr($ligne[$i],$pos,3); if(strlen($str)<3) { $str=trim($str,'%'); } $str=trim($str); $tab[$i]=intval($str); } $graph=new PieGraph(500,300); $graph->title->Set('Taux utilisation du disque dur'); $graph->img->SetMargin(40,140,20,40); $graph->img->SetImgFormat('png'); $p1=new PiePlot3D($tab); $graph->Add($p1); $graph->Stroke(); } }
et je mets le code suivant dans la vue superviser.phtml:

Code : Tout sélectionner

<html> <body> <img src="<?php $this->action(superviser,Supervision1);?>"/> </body> </html>
Benh, maintement lorsque je commente la ligne $graph->Stroke(); j'obtiens une image déchirée.mais lorsque je la laisse j'obtiens le meme message d'erreur!!
Prière de m'aider
Merci