Jump to content

[Résolu] Assigner le résultat d'une requete SQL simple à Smarty


Recommended Posts

Bonjour à tous,

Je n'ai pas réussi à trouver la réponse dans le forum et je bloque depuis assez longtemps dessus alors je me permet de créer ce Topic.

Je souhaiterais simplement assigner le résultat d'une requête SQL simple à Smarty afin de l'afficher dans un Tpl dans le but de me familiariser avec Smarty.


Dans mon exemple je souhaiterais afficher l'heure dans le fichier "pdf/invoice.tpl"

J'ai donc créer une fonction dans le fichier "/classes/Product.php" (je ne sais pas si c'est le bon fichier  pour insérer la fonction) et j'ai insérer ce code:

 

	public function gettime()
	{			
	$result = Db::getInstance()->executeS('SELECT CURTIME()');
    global $smarty;
	$smarty->assign('time', $result);		
	}

Ensuite j'ai ajouter cette ligne de code au fichier pdf/invoice.tpl

<tr>
<td style="text-align: left; width: 45%;font-size: 15pt">Le temps est: {$time} </td>
</tr>

 

Mais malheureusement ça ne s'affiche pas dans les factures. Es ce que quelqu'un aurait l'amabilité de me signaler d'où proviendrait le problème ?

 

Merci sincèrement pour votre aide,

 

Cyril

Edited by Presta260 (see edit history)
Link to comment
Share on other sites

Je débute en php et smarty.

J'ai crée une fonction en PHP avec une requête simple en SQL dans le but d'assigner le résultat de cette dernière dans Smarty afin d'afficher le résultat dans un fichier Tpl.  La fonction a été mise dans "/classes/Product.php" et ma logique serait d'appeler la fonction simplement  à l'aide de {$time} depuis un Tpl  mais ça ne fonctionne pas et je ne voit autrement pas comment je pourrais appeler la fonction gettime().

Edited by Presta260 (see edit history)
Link to comment
Share on other sites

Merci pour ces précisions claire :)

suite à votre message j'ai donc modifié la fonction comme ceci:

	public function gettime()
	{			
	$result = Db::getInstance()->getValue('SELECT CURTIME()');
        $smarty->assign('time', $result);		
	}

et malheureusement je reçois toujours "Le temps est:" sans la prise en compte de {$time}.
Je tiens toutefois à préciser que je vide le cache navigateur et FTP à chaque essaie.

Avez vous par hasard d'autres indications ?

Merci sincèrement pour votre aide.

Link to comment
Share on other sites

Mais vous n'appelez pas votre fonction... vous invoquez smarty et lui demandez un variable que votre fonction definie.
Pas de bras, pas de chocolat!

Un objet (model) ne doit pas manipuler la vue (principe MVC). Raison pour laquelle $smarty n'est pas defini en accès rapide dans celui-ci

Vous devez modifier le controller (ici HtmlTemplateInvoice), invoquer votre fonction dans la fonction getContent() et la function utilsera $this->smarty

  • Like 1
Link to comment
Share on other sites

Bonsoir Doekia et merci pour votre réponse bien détaillée,

Suite à votre message je me suis penché sur le fichier 'HTMLTemplateInvoice.php' et suite à nombreux essaies la fonction a fonctionnée 😃 !!!!

Pour que la fonction s'affiche dans le template 'invoice.tpl' j'ai du donc transférer la fonction dans le fichier 'HTMLTemplateInvoice.php' (je ne sais pas pourquoi elle ne fonctionnait pas avec le fichier "/classes/Product.php"

Ensuite dans la fonction getContent() j'ai invoquer la fonction gettime() avec le code ci-dessous:

$this->gettime();

Et j'ai du modifier la façon dont j'assignais la fonction à Smarty :

$smarty->assign('time', $result);

par

$this->smarty->assign(array('time' => $result));

Et la fonction s'affiche dans le template Invoice.tpl

Merci sincèrement pour votre aide ainsi qu'à celle de Mediacom 87 :)))

Veuillez recevoir mes très sincères salutations,

 

Edited by Presta260 (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...