Presta260 Posted June 10, 2020 Share Posted June 10, 2020 (edited) 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 June 11, 2020 by Presta260 (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted June 10, 2020 Share Posted June 10, 2020 Bonjour, et le texte Le temps est: s'affiche t il bien ? Link to comment Share on other sites More sharing options...
Presta260 Posted June 10, 2020 Author Share Posted June 10, 2020 Bonjour Mediacom87, merci pour votre retour, Oui le texte ci-dessous s'affiche bien simplement la variable qui ne s'affiche pas. Quote Le temps est: Link to comment Share on other sites More sharing options...
doekia Posted June 10, 2020 Share Posted June 10, 2020 Peut-être que tu as oublié d'appeler la fonction gettime() ... Link to comment Share on other sites More sharing options...
Presta260 Posted June 10, 2020 Author Share Posted June 10, 2020 Bonjour doekia et merci pour votre retour, je suis novice, comment je pourrais appeler la fonction gettime() ? Merci pour votre aide, Link to comment Share on other sites More sharing options...
doekia Posted June 10, 2020 Share Posted June 10, 2020 heu novice en quoi? Tu crées une fonction... il faut l'appeler... désolé je suis perdu dans ta logique là Link to comment Share on other sites More sharing options...
Presta260 Posted June 10, 2020 Author Share Posted June 10, 2020 (edited) 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 June 10, 2020 by Presta260 (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted June 10, 2020 Share Posted June 10, 2020 global ne doit plus être utilisé depuis des années. Vous avez utiliser la fonction executeS() qui retourne un résultat sous forme de tableau, certainement que pour avoir la donnée il faudrait plutôt utiliser getValue() 1 Link to comment Share on other sites More sharing options...
Presta260 Posted June 10, 2020 Author Share Posted June 10, 2020 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 More sharing options...
doekia Posted June 11, 2020 Share Posted June 11, 2020 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 1 Link to comment Share on other sites More sharing options...
Presta260 Posted June 11, 2020 Author Share Posted June 11, 2020 (edited) 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 June 11, 2020 by Presta260 (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now