Bonjour,
Je créé un système d'envoi de messages, mises à jour dans une base de données en me basant sur le Zend Framework 1.11.11, en utilisant le pattern MVC. Tout fonctionne, le moteur, les requêtes etc. On m'a demandé d'ajouter un module de création de PDF (pour pouvoir sortir à la demande la liste des tickets actifs par exemple). Pour cela, j'ai donc inclus la librairie fpdf, j'ai créé un contrôleur pdfcontroller, et une classe mypdf pour "driver" tout ça.
Sauf que je me retrouve à l'appel de la page avec un message d'erreur qui est le suivant :
Notice: Undefined property: MyPdf::$titre in /www/htdocs/InfoNaut/application/models/MyPdf.php on line 11 FPDF error: Some data has already been output, can't send PDF file
voici l'extrait du code de l'index.php, pour préciser la localisation de la librairie
Code :
- defined('LIBRARY_PATH')
- || define('LIBRARY_PATH', realpath(dirname(__FILE__) . '/../library'));
|
Le PdfController :
Code :
- <?php
- //appel des modeles necessaires
- require_once (APPLICATION_PATH."/models/Tavurnav.php" );
- require_once(APPLICATION_PATH."/models/Tavurnavlocal.php" );
- require_once(APPLICATION_PATH."/models/Tavirade.php" );
- require_once(APPLICATION_PATH."/models/Tavinav.php" );
- //appel librairie fpdf
- require_once (LIBRARY_PATH."/fpdf17/fpdf.php" );
- class PdfController extends Zend_Controller_Action
- {
- public function init()
- {
- }
- public function indexAction () {
- $this->view->message = "contrôleur par défaut";
- }
- public function afficheavurnavAction()
- {
- //TODO
- }
|
La classe MyPdf, localisée avec les modèles :
Code :
- <?php
- require_once (LIBRARY_PATH."/fpdf17/fpdf.php" );
- class MyPdf extends FPDF
- {
- public function Header()
- {
- $this->SetFont('Times','B',18);
- $this->Cell(80);
- $this->Cell(30,10,$this->titre,0,0,'C');
- $this->Ln();
- $this->Cell(30,10,"Mon sous titre",1,0,'C');
- $this->Ln();
- }
- }
|
Et pour finir, la page phtml d'appel du pdf (pour le moment, juste un pdf vide avec un titre et un sous-titre)
Code :
- require_once(APPLICATION_PATH."/models/MyPdf.php" );
- $pdf = new MyPdf();
- $pdf->AddPage();
- $pdf->titre = "Titre test";
- $pdf->Output();
|
Le problème se situe visiblement dans la classe MyPdf sur le $this->titre. En effet, lorsque je rentre un titre en dur $this->Cell(30,10,$"un titre",0,0,'C'); par exemple, ça fonctionne bien.
Merci pour l'aide apportée