Précédent   Forum du club des développeurs et IT Pro > PHP > Bibliothèques et frameworks > Templates
Templates Forum d'entraide sur les templates (gabarits) avec PHP. Exemples : Smarty, TinyButStrong... Avant de poster -> FAQ templates et Cours gabarits
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 18/07/2007, 19h28   #1
dedesite
Membre du Club
 
Inscription : 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 : 43
Points : 43
Par défaut [TBS] 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 :
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 :
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
dedesite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 14h33   #2
H_leOuf
Invité de passage
 
Inscription : juillet 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 3
Points : 3
Points : 3
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 :
$index->MergeBlock('blkTablesName, *', $test);
En l'occurence ta syntaxe est mauvaise, essais plutot ça :
Code :
$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 :
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 :
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é
H_leOuf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 14h43   #3
dedesite
Membre du Club
 
Inscription : 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 : 43
Points : 43
Merci H pour ces infos,
mais la page HTML affiche toujours ça :

Citation:
[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
dedesite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 15h50   #4
H_leOuf
Invité de passage
 
Inscription : juillet 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 3
Points : 3
Points : 3
Citation:
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 .

Citation:
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 ?
H_leOuf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 13h48   #5
manuzed78
Membre à l'essai
 
Homme Manu
Inscription : mai 2009
Messages : 71
Détails du profil
Informations personnelles :
Nom : Homme Manu
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : mai 2009
Messages : 71
Points : 20
Points : 20
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 :
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 ?
manuzed78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 16h40   #6
eric.pommereau
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur, pôle cartographie
Inscription : décembre 2004
Messages : 715
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 39
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 864
Points : 1 864
.. comme on se retrouve :-p

Bon courage !!

++
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 15h59.


 
 
 
 
Partenaires

Hébergement Web