b2comm Posted April 30, 2012 Share Posted April 30, 2012 Bonjour, une question vraiment toute bête, mais si on ajoute une fonction perso à une classe grâce aux fichiers d'override, par exemple dans override/classes/cart.php, on ajoute ceci <?php class Cart extends CartCore { public function maFonction() { ma fonction blablabla... } } ?> comment peut-on tout simplement appeler cette fonction ou plus exactement le résultat renvoyé par celle-ci dans le template shopping-cart.tpl (par quelle variable ou quel protocole smarty) sur une prestashop 1.4 ? D'avance merci, je m'arrache mes cheveux alors que je suis sur que c'est simplissime et évident. Link to comment Share on other sites More sharing options...
CartExpert.net Posted April 30, 2012 Share Posted April 30, 2012 Bonjour. {assign var="name" value="$cart->maFonction()"} Link to comment Share on other sites More sharing options...
b2comm Posted May 2, 2012 Author Share Posted May 2, 2012 Bonjour merci CartExpert de te pencher sur mon problème. Mais ça ne marche pas. Je dois faire une grosse erreur quelque part... Voici ce que j'entre dans ../classes/override/Cart.php (j'ai pris une fonction volontairement basique pour ne pas encombrer le "débat" avec du code php). public function maFonction() { $resultat = rand(1, 9); return $resultat; } Y a t'il ici quelque chose que j'aurai déjà du assigner ? d'après certains tutos que j'ai suivi non... mais vu que ça marche pas quelque soit la fonction saisie (avec echo à la place de return ou autre...) Voici ce que je mets donc dans mon template shopping-cart.tpl : {assign var="name" value="$cart->maFonction()"} Ca me renvoie l'erreur suivante "Catchable fatal error : Object of class Cart could not be converted to string in... chemin du template " J'ai essayé des tas de méthodes pour appeler une fonction dans un template, trouvées sur le forum, copiées-collées telles qu'elles depuis des posts et tutos pour prestashop 1.4, (et qui visiblement marchent chez leur auteur )... Idem sur des sites consacrés à Smarty, ou l'on apprend que des protocoles comme function_register sont apparemment déprécié sous smarty 3... Mais rien ne fonctionne à ce jour. HELP... Je dois vraiment passer à côté d'un énorme pavé ! Amicalement Link to comment Share on other sites More sharing options...
Broceliande Posted May 3, 2012 Share Posted May 3, 2012 On 5/2/2012 at 2:30 PM, b2comm said: {assign var="name" value="$cart->maFonction()"} Salut, En fait tu dois le faire en deux temps car cette syntaxe n'autorise pas l'appel à une fonction smarty pour renseigner value= ... 1 ère étape , initialiser la variable à vide : {assign var="name" value=""} 2ème , modifier l'appel de la fonction pour passer ta variable : {$cart->maFonction($name)} Côté déclaration de la fonction, tu dois utiliser les paramètres par référence afin de les modifier. Inutile d'utiliser un return, une assignation suffit : public function maFonction(&$name) { $name= rand(1, 9); } Pour info il n'est pas véritablement nécessaire d'utiliser une override pour déclarer une fonction smarty , cf cet article . A noter que si function_register est dépréciée, ce n'est pas le cas de registerPlugin.... Par ailleurs prestashop intègre une fonction valable à la fois pour smarty 2 et 3 , smartyRegisterFunction , dont l'appel est justement expliqué dans l'article que je cite ci-dessus 1 Link to comment Share on other sites More sharing options...
b2comm Posted May 3, 2012 Author Share Posted May 3, 2012 Bonjour Broceliande MERCI MERCI MERCI tu me sauves la vie ! Le registerPlugin oui j'ai vu ça. Je vais jeter un oeil à l'article. mais encore une fois MERCI MERCI MERCI ! Post résolu 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