IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Bibliothèques et frameworks PHP Discussion :

[OpenTBS] Problème avec MergeBlock


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Points : 76
    Points
    76
    Par défaut [OpenTBS] Problème avec MergeBlock
    Bonjour,

    Voila ça fais quelques temps maintenant que je me prend la tête avec la fonction MergeBlock du moteur de template TinyButStrong... Je n'arrive pas à la faire marcher. Je croyais au départ que c'était mon code qui n'était pas bon alors j'ai créer un code de test, très simple et ça ne marche toujours pas, pourtant je crois avoir fais comme écris dans le manuel...

    Voici mon fichier index.php

    Code : 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
    <?php
    	require_once "include/class/tbs_class.php";
    	// Création du template
    	$index = new clsTinyButStrong();
    	//on créer le tableau
    	$test = array(1,2,3,4);
    	//puis on le merge dans la variable blkTablesName
    	$tab = $index->MergeBlock('blkTablesName, *', $test);
    	//la fonction MergeBlock semble avoir fonctionnée puisque je peu récupérer le tableau qu'elle renvoie
    	for($i = 0; $i<4; $i++ )
    		echo $tab[$i];
    	//Chargement du template principale
    	$index->LoadTemplate("test.tpl");
    	//Affichage de la page
    	$index->Show();
    ?>
    Et le fichier test.tpl :

    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
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    	<title>Test</title>
    	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
    </head>
    <body>
    	<div>
    			[blkTablesName;block=div]
    			<br />
    	</div>
    </body>
    </html>

    Je précise que j'utilise la version 3.2 et que son utilisation avec des variables PHP simples (champs TBS) s'est effectué sans problème.
    Je dois vraiment avoir fait une faute de débutant mais je vois vraiment pas où elle se situe.

    Merci de me guider dans ma résolution de problème .

    A+
    Andréas

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Déja mon chere dede, je te conseil de lire un peu la doc de TBS, elle est assez bien foutu et t'aidera beaucoup.
    pour la methode MergeBlock : http://www.tinybutstrong.com/fr/manu...php_mergeblock

    Sinon,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $index->MergeBlock('blkTablesName, *', $test);
    En l'occurence ta syntaxe est mauvaise, essais plutot ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $index->MergeBlock('blkTablesName', 'array', $test);
    le mot clé 'array' indique que tu passe un tableau a la fonction.
    Petite tips : pour afficher un tableau sans te faire chier lors de tes tests de debugage, utilise la fonction print_r, comme ceci :
    Ensuite, Perso je donne toujours un titre aux entrés de tableaux pour pouvoir les identifier coté HTML, du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $test = array();
    $test[] = array("id" => 1);
    $test[] = array("id" => 2);
    $test[] = array("id" => 3);
    $test[] = array("id" => 4);
    (le faite d'utiliser $test[] incrémente numériquement les entrés de ton tableau)
    Tu peux largement optimiser ce morceau de code, mais je te le met en dur pour l'exemple. Prend l'habitude d'utiliser un tableau a deux dimentions comme ceci, car déja quand tu passe une requette SQL a MergeBlock ça te sortira un tableau de cette forme, mais aussi car se sera plus facile pour te repérer dans tes template.

    Et enfin coté HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <div>
    	[blkTablesName.id;block=div]
    	<br />
    </div>
    Je n'ai pas tester donc il ce peux que j'ai fais des erreur et autres fautes de frappe, mais le concept est la.
    En esperant t'avoir aidé

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Points : 76
    Points
    76
    Par défaut
    Merci H pour ces infos,
    mais la page HTML affiche toujours ça :

    [blkTablesName.id;block=div]
    Pourquoi la variable n'est-elle pas affichée? Est-ce que quelqu'un peut tester chez lui pour voir si ça viens de moi ou de TBS??

    [EDIT] Youpi!!!!!!!!! J'ai trouvé le problème... Quel b*** je suis!!! J'ai regarder les example sur le site Tiny But Strong (qui sont très bien fait d'ailleur!!) et j'ai vu qu'il fallait charger le template AVANT d'appelé la fonction MergeBlock()!!!!
    Je sais pas pourquoi mais je trouvais ca plus logique de le faire après.
    Bon en tout cas ça marche!

    @H : l'étoile après le nom du block c'est pour spéicifier qu'on veux que MergeBlock renvois le tableau dans une variable (ici $tab) sinon ca ne le fais pas. (j'avais lu la doc quand même ).

    Merci,
    A+
    dede

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    j'ai vu qu'il fallait charger le template AVANT d'appelé la fonction MergeBlock()!!!!
    En effet j'ai omis ce detail qui a son importance...
    Toutes mes excuses ^^, visiblement tu t'es débrouillé par toi meme .

    spéicifier qu'on veux que MergeBlock renvois le tableau dans une variable
    L'utilité de MergeBlock c'est de fusionner une portion de code HTML avec les entrées du tableau de valeurs que tu lui passe. Quel est l'utilité du renvois de ce tableau par MergeBlock ?

  5. #5
    Membre du Club
    Homme Profil pro
    A la découverte de la POO
    Inscrit en
    Mai 2009
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : A la découverte de la POO

    Informations forums :
    Inscription : Mai 2009
    Messages : 93
    Points : 61
    Points
    61
    Par défaut génération odt avec tbs
    Bonjour à tous,

    j'ai un soucis pour générer l'exemple de TBS,
    je me suis mis au Zend il y a peu alors en plus c'est du MVC

    voici par exemple un controller :

    Code : 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
     public function listerpararchiveAction()
        {
    		// On récupère l'ID de l'archive passé en Get
    		if ( $this->getRequest()->isGet() ) {
    			$archive = $this->getRequest()->getParam( 'num_archive' ); //echo $archive;
    			$archive = str_replace('__', '/', $archive);
    		}
     
            $scelles = new Application_Model_DbTable_Scelles();
    		$select   = $scelles->select()
                        ->setIntegrityCheck(false)
                        ->from (array('sc'=>'scelles'))
                        ->joininner (array('sr'=>'service'),'sr.id=sc.id_service',array('nom_service'=>'sr.nom')) 
    					->where ( 'sc.num_archive="' . $archive . '"' )
    					->order(array('sc.id desc'));
    		// exit ("$select");
     
     
    		//*** TEST TINYBUTSTRONG ***
    		$TBS = new clsTinyButStrong;
    		$TBS->Plugin(TBS_INSTALL, OPENTBS_PLUGIN);
    		$TBS->LoadTemplate(APPLICATION_PATH . '\..\library\tbs_plugin_opentbs_1.7.4\tbs.odt'); // Load the archive 'document.odt'.
     
    		//Prepare some data for the demo
    		$data = array();
    		$data[] = array('firstname'=>'Sandra' , 'name'=>'Hill'      , 'number'=>'1523d', 'score'=>200, 'email_1'=>'sh@tbs.com',  'email_2'=>'sandra@tbs.com',  'email_3'=>'s.hill@tbs.com');
    		$data[] = array('firstname'=>'Roger'  , 'name'=>'Smith'     , 'number'=>'1234f', 'score'=>800, 'email_1'=>'rs@tbs.com',  'email_2'=>'robert@tbs.com',  'email_3'=>'r.smith@tbs.com' );
    		$data[] = array('firstname'=>'William', 'name'=>'Mac Dowell', 'number'=>'5491y', 'score'=>130, 'email_1'=>'wmc@tbs.com', 'email_2'=>'william@tbs.com', 'email_3'=>'w.m.dowell@tbs.com' );
     
    		//Merge data
    		$TBS->MergeBlock('a,b', $data);
     
    		//Define the name of the output file
    		$file_name = 'test-tbs-' . date('Y-m-d') . '.odt';
    		//$TBS->Plugin(OPENTBS_DEBUG_XML_SHOW);
    		$TBS->Show(OPENTBS_DOWNLOAD, $file_name);
     
     
     
     
    		$this->view->scelles = $scelles->fetchAll($select);
     }
    il y a la premiere partie avec ma requete qui marche tres bien. Pour TBS par contre quoique je mette dans mon template j'obtiens le résultat de cette requete au lieu des données brutes contenues dans $data

    de plus si j'enlève le mode debug, il me génère 92 pages avec à chaque page une ligne de hiéroglyphes ....

    Quelqu'un aurait une petite idée ?

  6. #6
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    .. comme on se retrouve :-p

    Bon courage !!

    ++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OpenTBS] Problème avec MergeField
    Par yasen77 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 10/09/2015, 15h01
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 12h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 19h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 17h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo