Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MkFramework Discussion :

Problème avec impression en pdf


Sujet :

MkFramework

  1. #1
    Membre éclairé
    Problème avec impression en pdf
    Bonsoir Imikado

    j'ai soucis avec l'outil html2pdf, je m'explique:

    Voici ma vue pdf.php
    Code html :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <?php 
    $oForm=new plugin_form($this->tmypaiment);
    ?>
    <form class="form-horizontal" action="" method="POST" >
     
    	<div class="form-group">
    		<label class="col-sm-2 control-label">Code </label>
    		<div class="col-sm-10"><?php echo $this->tmypaiment->codeunpai ?></div>
    	</div>
     
    	<div class="form-group">
    		<label class="col-sm-2 control-label">Nom Complet</label>
    		<div class="col-sm-10"><?php echo $this->tmypaiment->nomcomppai ?></div>
    	</div>
     
    	<div class="form-group">
    		<label class="col-sm-2 control-label">Palier</label>
    		<div class="col-sm-10"><?php echo $this->tmypaiment->palierpai ?></div>
    	</div>
     
    	<div class="form-group">
    		<label class="col-sm-2 control-label">Mode Paiement</label>
    		<div class="col-sm-10"><?php echo $this->tmypaiment->modepaie ?></div>
    	</div>
     
    	<div class="form-group">
    		<label class="col-sm-2 control-label">Nautre Paiement</label>
    		<div class="col-sm-10"><?php echo $this->tmypaiment->naturepai ?></div>
    	</div>
     
     
    	<div class="form-group">
    		<label class="col-sm-2 control-label">Montant</label>
    		<div class="col-sm-10"><?php echo $this->tmypaiment->montpai ?></div>
    	</div>
     
    	<div class="form-group">
    		<label class="col-sm-2 control-label">Reference Paiment</label>
    		<div class="col-sm-10"><?php echo $this->tmypaiment->refpai ?></div>
    	</div>
    </form>


    et ma fonction _pdf dans mon module mypaiment :
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     public function _pdf(){
     
    		//$tmypaiment=model_mypaiment::getInstance()->findById( _root::getParam('idmypaie') );
     
    		$tmypaiment=model_mypaiment::getInstance()->findAll();
    		$oView=new _view('mypaiment::pdf');
    		$oView->tmypaiment=$tmypaiment;
     
    		$oView->tJoinmodel_naturepaiment=model_naturepaiment::getInstance()->getSelect();		
    		$oView->tJoinmodel_modepaiment=model_modepaiment::getInstance()->getSelect();		
    		$oView->tJoinmodel_paliers=model_paliers::getInstance()->getSelect();
     
        	$html2pdf=new HTML2PDF('P','A4','fr');
        	$html2pdf->WriteHTML($oView->show());
        	$html2pdf->Output('fiche.pdf');


    et mon lien pour lancer le pdf :
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    <a class="btn btn-primary" href="<?php echo $this->getLink('mypaiment::pdf') ?>">Imprimer</a>


    Au lancement j'ai l'erreur suivante :



    Trying to get property of non-object
    1 <?php
    2 $oForm=new plugin_form($this->tmypaiment);
    3 ?>
    4 <form class="form-horizontal" action="" method="POST" >
    5
    6 <div class="form-group">
    7 <label class="col-sm-2 control-label">Code Caides</label>
    8 <div class="col-sm-10"><?php echo $this->tmypaiment->codeunpai ?></div>
    9 </div>
    il y a un truc qui m’échappe

    Merci de m'aider à trouver le problème.
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  2. #2
    Rédacteur

    Je pense que vous récupérez un tableau d'objet et non un objet:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    $tmypaiment=model_mypaiment::getInstance()->findAll();


    Dans ce genre de cas, utilisez la barre de debug:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    plugin_debug::addSpy('$tmypaiment',$tmypaiment);


    ou plugin_sc_debug (si vous utilisez le template Software Craftsmanship

    Vous verrez un bouton "spy variables" permettant de voir le contenu de celle-ci
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Membre éclairé
    Bonjour Imikado

    Après beaucoup de mal, je viens de comprendre $tmypaiment ramenais un tableau d'objet.

    Voici les données que je veux imprimer


    j'ai donc modifier la fonction _pdf :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    
     public function _pdf(){
    	
    		$tmypaiment=model_mypaiment::getInstance()->findById('4'); // mettre un identifiant (id)
    		........
    	}


    et la j'ai eu un rendu. celui ci :



    Je me rend compte que c'est seulement une donné qui est imprimée, hors je voulais imprimer toutes les informations affichées.

    Mes questions sont les suivantes :
    1- Comment pouvoir imprimer toutes les données affichées ?
    2- Une Tuto sur (une tuto serai la bienvenue ):
    - Comment imprimer plusieurs données affichées
    - Comment imprimer une seule donnée affichée
    3- je dois chercher aussi a ameliorer le rendu a l'impression je suis loin du compte.

    Merci
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  4. #4
    Rédacteur

    Bonjour,

    Vous pouvez faire une boucle sur votre tableau d'objet, concatener le rendu dans une nouvelle variable et enfin génerer votre pdf

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    public function _pdf(){
     
    	$tableauDobjet=model_mypaiment::getInstance()->findAll();
     
    	$sHTMLGlobal='';
     
    	foreach($tableauDobjet as $objet){
     
    		$oView=$this->generateViewForObject($object);
     
     
    		$sHTMLGlobal.=$oView->show();
     
     
    	}
     
     
    	$html2pdf=new HTML2PDF('P','A4','fr');
        	$html2pdf->WriteHTML($sHTMLGlobal);
        	$html2pdf->Output('fiche.pdf');
     
    }



    Et dans votre méthode individuel:
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    public function generateViewForObject($objet){
    	$oView=new _view('mypaiment::pdf');
    	$oView->tmypaiment=$objet;
     
    	$oView->tJoinmodel_naturepaiment=model_naturepaiment::getInstance()->getSelect();		
    	$oView->tJoinmodel_modepaiment=model_modepaiment::getInstance()->getSelect();		
    	$oView->tJoinmodel_paliers=model_paliers::getInstance()->getSelect();
     
    	return $oView;
     
    }
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Membre éclairé
    Bonjour imikado

    je viens d’essayer ta solution mais j'ai le message suivant :

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    public function _pdf(){
     
    	$tableauDobjet=model_mypaiment::getInstance()->findAll();
     	$sHTMLGlobal='';
     
    	foreach($tableauDobjet as $objet){
     		$oView=$this->generateViewForObject($object);
    		$sHTMLGlobal.=$oView->show();
     	}
             $html2pdf=new HTML2PDF('P','A4','fr');
        	$html2pdf->WriteHTML($sHTMLGlobal);
        	$html2pdf->Output('fiche.pdf');
     }
     
     public function generateViewForObject($objet){
    	$oView=new _view('mypaiment::pdf');
    	$oView->tmypaiment=$objet;
     
    	$oView->tJoinmodel_naturepaiment=model_naturepaiment::getInstance()->getSelect();		
    	$oView->tJoinmodel_modepaiment=model_modepaiment::getInstance()->getSelect();		
    	$oView->tJoinmodel_paliers=model_paliers::getInstance()->getSelect();
     
    	return $oView;
    }


    Erreur :
    Undefined variable: object
    foreach($tableauDobjet as $objet){
    $oView=$this->generateViewForObject($object);
    $sHTMLGlobal.=$oView->show();
    }
    Je comprend pas bien les deux fonctions ? c'est un problème d'accolade au niveau de l'erreur ?

    Merci
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  6. #6
    Rédacteur

    Oui j'ai fait une faute de frappe:$
    il manque un c

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach($tableauDobjet as $objet){
     		$oView=$this->generateViewForObject($object);
    		$sHTMLGlobal.=$oView->show();
     	}


    replacer par:

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach($tableauDobjet as $object){
     		$oView=$this->generateViewForObject($object);
    		$sHTMLGlobal.=$oView->show();
     	}


    Comme vous l'avez demandé: _pdf c'est l'action (la page) pour generer le pdf
    et vous avez demandé de "remplir" ce pdf avec plusieurs enregistrements, d'ou la méthode generateViewForObject appelé en boucle
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  7. #7
    Membre éclairé
    Bonjour Imikado

    Merci pour les explications avec le code fournie je vais m'y 'inspirer pour la suite.

    Bonne journée
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  8. #8
    Rédacteur

    De rien, je note pour plus tard comme sujet de tutorial à écrire
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

###raw>template_hook.ano_emploi###