Jump to content

[RESOLU] Comment appeler une fonction dans un template


Recommended Posts

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.

:huh:

Link to comment
Share on other sites

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 :huh: )...

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

{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

  • Like 1
Link to comment
Share on other sites

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 ! :lol:

Post résolu

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...