Bllidz Posted June 28, 2021 Share Posted June 28, 2021 (edited) Bonjour, Je créer actuellement une boutique en 1.7.7.4 et je rencontre actuellement un problème. Ce problème est mon manque de connaissance sur symfony. Fin bon je m'explique je souhaite faire appel a une fonction ce trouvant dans ma classe de Product qui est en override, ceci étant dit je souhaite que cette fonction s'affiche sur un bloc qui se trouve dans order.Le fichier en question est product.html.twig mais vu que ce n'est pas un tpl je ne peux pas faire un simple {Product::mafonction($id_order_detail)} donc j'ai été faire mes recherches afin de trouver une solution.. j'ai vu qu'il n'était pas "possible" directement d'appeler une fonction php dans un fichier twig et que la syntaxe pour appeler une fonction est la suivante : {{mafonction(Parametre)}} Mais du coup ce qui semble logique il ne trouve pas ma fonction qui se trouve dans la classe Product.php Alors j'aimerai savoir si quelqu'un connaitrait la solution afin que je puisse appeler ma fonction dans le fichier twig Merci d'avance ma version ps 1.7.7.4 Edited June 28, 2021 by Bllidz (see edit history) Link to comment Share on other sites More sharing options...
doekia Posted June 28, 2021 Share Posted June 28, 2021 Si la fonction est statique, comme en smarty {{Product::mafonction($id_order_detail)}} Link to comment Share on other sites More sharing options...
Bllidz Posted June 28, 2021 Author Share Posted June 28, 2021 (edited) 23 minutes ago, doekia said: Si la fonction est statique, comme en smarty {{Product::mafonction($id_order_detail)}} Salut doekia, Merci de ta réponse cependant j'avais déjà essayé et ça me retournait une erreur l'erreur en question : (j'ai mit un paramètre brut qui et 14 pour tester) le td du fichier product.html.twig qui se trouve dans src/PrestaShopBundle/Resources/views/Admin/Sell/Order/Order/Blocks/View <td >{{Product::maFonction(14)}}</td> et ma fonction Product.php dans override/classes class Product extends ProductCore { /*Modif jérémy*/ public static function maFonction($id_order_detail) { return Db::getInstance()->getvalue('SELECT date_liv FROM `' . _DB_PREFIX_ . 'order_detail` WHERE `id_order_detail` = '. (int) $id_order_detail) ; } (c'est une simple requete sql) Je ne sais pas si le code aide a mieux comprendre l'erreur car de ce que je comprends c'est qu'il n'aime pas les :: après Product Et j'ai bien vidé le cache également car on ne sait jamais Edited June 28, 2021 by Bllidz (see edit history) Link to comment Share on other sites More sharing options...
doekia Posted June 28, 2021 Share Posted June 28, 2021 En effet j'avais zappé que la syntaxe :: n'est pas admise. Il faut enregistrer la fonction en extension Twig https://stackoverflow.com/questions/32920217/how-to-call-static-function-in-symfony2-twig-template#46636220 En même temps ton use case (requête SQL) devrait être pensé ailleurs qu'en view (twig) Link to comment Share on other sites More sharing options...
Bllidz Posted June 28, 2021 Author Share Posted June 28, 2021 1 hour ago, doekia said: En effet j'avais zappé que la syntaxe :: n'est pas admise. Il faut enregistrer la fonction en extension Twig https://stackoverflow.com/questions/32920217/how-to-call-static-function-in-symfony2-twig-template#46636220 En même temps ton use case (requête SQL) devrait être pensé ailleurs qu'en view (twig) Merci je regarde ça demain matin, je reviens si besoin. Dans un sens tu as raison mais sachant que je refais juste tout ce que j'avais fait en 1.7.6.9 sur la partie commande qui a migré en symfony. Après je me prends certainement la tête et il y'a sûrement mieux a faire dans un sens. CDT Link to comment Share on other sites More sharing options...
Bllidz Posted June 29, 2021 Author Share Posted June 29, 2021 17 hours ago, doekia said: En effet j'avais zappé que la syntaxe :: n'est pas admise. Il faut enregistrer la fonction en extension Twig https://stackoverflow.com/questions/32920217/how-to-call-static-function-in-symfony2-twig-template#46636220 En même temps ton use case (requête SQL) devrait être pensé ailleurs qu'en view (twig) Bon je reviens car j'ai été regarder ta solution , et regarder sur le net pour comprendre comment marche la solution cependant je ne comprends pas tout. Donc la solution pour créer un filtre est ça $viewVars['MyStaticClass'] = new MyStaticClass(); // ... $html = $twig->render('myTemplate.html.twig', $viewVars); et dans le fichier twig : {{ MyStaticClass.getData() }} Cependant je ne vois pas ou faut mettre la première partie, car cette solution utilise la fonction render() de $twig cependant je n'ai pas d'objet portant ce nom. Dois mettre dans ma classe product.php ? ou dois-je créer une fonction si oui comment est elle appelé ? $viewVars['prod'] = new Product(); // ... $html = $twig->render('Product.html.twig', $viewVars); et dans le fichier product.html.twig {{ prod.mafonction(id_order) }} Merci de ton aide 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