Jump to content

passer variable php vers tpl PS 1.6


Recommended Posts

Bonsoir à tous ;)

 

c'est peu fière surtout après une soiree de recherche et après la lecture complète du tuto ....

"Créer un module Prestashop"

 

que je me permet de venir vous demander un renseignement ...

 

voila, je suis on ne peux plus novice en réalisation PrestaShop et je réalise mon premier module!

 

voila, j'aimerais faire passer l'id de l'utilisateur vers le tpl ....

 

j'ai trouver ceci pour récupérer l'id_user =>

global $cookie;
$user_id = $cookie->id_customer;

mais derrière j'ai beau me tire les cheveux, je n'arrive pas à l'envoyer vers le .tpl :wacko:

 

voici mon le contenu de mon fichier display.php

location : ../modules/MON_MODULE/controllers/front/display.php


class galeriedisplayModuleFrontController extends ModuleFrontController
{
	public function initContent()
	{
		parent::initContent();
		
		//$this->assign("test","Je suis une variable");
		
		$this->setTemplate('display.tpl');
	}
}

mon display.tpl est à la bonne place car je vois se qu'il y a inscrit dedant ....

 

veuillez escuser ma novicitée! :blush:

 

Link to comment
Share on other sites

Bonjour à tous ^_^

 

je rattaque avec mon problème! :P ( vu que j'en ai d'autre .... mais un à la fois) :lol:

 

Bon, j'ai quand mêmes avancé depuis hier! ..... ouf ....

 

je me suis rendu compte de se qu'était la variable $this ..... BHOUAAAA c'est de la balle! :wub:

 

Mais encore faut t'il la maitriser! :unsure:  se qui n'est pas encore mon cas! :(

 

Soit ... tout s'apprend! :ph34r:

 

voici mon code =>

class galeriedisplayModuleFrontController extends ModuleFrontController
{
	public function initContent()
	{
		parent::initContent();
		
		$this->nathijetaime = 'tres fort'; 
		//print_r($this);
		
		$this->setTemplate('display.tpl');
	}
}

j'ai pas avancer des masse! :blush:

 

bon j'airrive à ajouter des variables à la variable "$this" qui apperement, va vers mon tld ^_^

 

j'ai également constater que l'id de l'utilisateur se trouvais dans la variable "$this" .... ici =>

protected 'context' => 
    object(Context)[4]
      public 'cart' => 
        object(Cart)[26]
          public 'id' => null
          public 'id_shop_group' => int 1
          public 'id_shop' => int 1
          public 'id_address_delivery' => int 0
          public 'id_address_invoice' => int 0
          public 'id_currency' => int 1
 ======>  public 'id_customer' => int 2  <======

J'ai bien essayer de la faire afficher comme ceci par exemple =>

var_dump($this->Context-Cart-id_customer);

mais en vainq <_<

 

Enfain voila où j'en suis depuis hier :blink:

 

Savez vous comment je peux décomposer cette Bombe! :P   .... surtout dans le tpl ....

 

Allais bonne journée à tous B)

Link to comment
Share on other sites

Bha noooon .....

 

je me suis dit, je vais me mettre en Mode Bourrin ....

 

un petit count($this) vite fait suivi d'une boucle pour acrémenter chaque entrée dans une variable simple ......

 

en attendant de trouver la solution plus propre Bien-sûre! :D

 

Mais non! .... dans l'os! <_< 

 

elle ne me retourne qu'une seul entrée! :angry:

 

l'enfoir..... mais attendez ...... elle ne serait donc composée que d'une seul variable composée!?! :huh:

 

Pfff si quelqu'un a une lanterne .... je suis dans le broullard complet :(

Link to comment
Share on other sites

Le problème est que votre function getContent ne retourne rien.

 

Il faudrait plutôt qu'elle se termine par

 return $this->display(__FILE__, 'display.tpl');

pour passer les variables en smarty, utlisez cette syntaxe

$this->context->smarty->assign(      
      array(
          'test' => 'Je suis une variable',
          'test2' => 'Je suis une autre variable'
      )
  );
  • Like 1
Link to comment
Share on other sites

haaaaa je commence par te remercier d'avoir pris le temps de me répondre ChDUP! ^_^

 

C'est vraiment sympa! B)

 

Je test ça de suite .... fin je termine ce message avant!  :lol:  ;)

 

par contre de mon coté, je pense avoir trouvé la solution pour extraire une variable et son contenu de la Bebête "$this" .... sans passer par un array! :P

 

je vais encore tenter d'en extraire 3-4 afin de m'assurer que ma technique est fiable et que ce n'est pas ... "la chance du débutant"! :rolleyes:

 

Te tiens au courant! ^_^

Link to comment
Share on other sites

Me revoilou ^_^
 
bheiiiiin voila je vais faire mon boulet!  <_< 
 
j'ai pas réussis à bien afficher les variables de ton code! :blush:
 

j\'ai test dans php ==> echo $test; echo $test['0']; var_dump($test); .... et j\'en passe 

il à rien voulu savoir! :unsure:
 
j'ai réussis à afficher du contenu d'une seul façon =>  var_dump(array($test)); :blink: 
 
Et il a afficher ça =>

array (size=1)   0 => null <!-- le null c\'est pour moi je crois! --> 

:P

 

le hic, c'est qu'il n'affiche plus le css de ma page tlp qui est non attenant à PrestaShop ( ils est dans le rep du module/css ) :huh:
et un autre truc bien marrant, il double Presta sur sa hauter :lol: 
 
J'aurais voulu le faire expres, j'aurais pas réussis! :ph34r:  :lol:
ca doit surement venir du faite que je ne l'ai pas mis à la bonne place :P
On est novice ou on ne l'est pas! :ph34r:  :D
 
bon trève de plaisanterie ....
 
j'ai enfin réussis à récupérer les vabriables de la global "$this"  sans passer par un array B)
facile pour certain mais moi j'ai sorti mes pagailles de compète! ^^ :P
 

donc .......... 
comment puis-je faire pour envoyer une seul variable ( non array ) de mon .php vers mon .tpl? 

Je crois que j'ai lu ça dans le cours que j'ai télécharger pour créer mon module .... :rolleyes:

je ferai une boucle pour passer le peu de variable que je dois envoyer! ;)

tout en sachant que j'utilise déja ce code pour envoyer le css de Presta vers mon tpl via la variable "$this" ....., je ne peux donc pas le supprimer .... :mellow:

class galeriedisplayModuleFrontController extends ModuleFrontController
{
	public function initContent()
	{
		parent::initContent();
		$this->setTemplate('display.tpl');		
	}
};	

Mais j'imagine que ca ne posera pas de problème de mettre une nouvelle fonction juste apres?!? :rolleyes:

 

Merci d'avance :P

Edited by Jim & Nathi (see edit history)
Link to comment
Share on other sites

 

Le problème est que votre function getContent ne retourne rien.

 

Il faudrait plutôt qu'elle se termine par

 return $this->display(__FILE__, 'display.tpl');

pour passer les variables en smarty, utlisez cette syntaxe

$this->context->smarty->assign(      
      array(
          'test' => 'Je suis une variable',
          'test2' => 'Je suis une autre variable'
      )
  );

he je viens de replonger la tête dans mes feuilles de formation pour passer une variable de php vers le tpl ....  et effectivement c'était bien dedant .....

Et bingo, a quelque ligne pret, c'est le mêmes que le tiens! B) 

 

je vais regarder pour mieu l'utiliser cette fois! :D

 

Encore merci ;)

Link to comment
Share on other sites

t'aurais dû profiter du soleil ce week end... comme je ne connais pas ton niveau je vais essayer d'expliquer plusieurs points.

 

1- global : oublie ça c'est pour les vielles versions de prestashop

2- si tu veux faire un module ne prend pas les exemples, prend un "vrai" module qui fonctionne, tu es sûre d'avoir quelque chose qui ne te fera pas perdre un week end pour rien.

3- l'id customer c'est :

 

$this->context->customer->id

 

4- si tu veux connaitre le contenu d'une variable, utilise la fonction ppp (au lieu de dump), exemple ppp($this->context->customer) te donnera toutes les variables et les valeurs concernant le client

5- un exemple concret :

public function hookdisplayCustomerAccount()

{
   $id_customer = (int)$this->context->customer->id;
   $this->context->smarty->assign('id_client', $id_customer);
   return $this->display(__FILE__, 'mon_fichier_tpl.tpl');
}

 

 
 
-il faut que le module soit greffé sur le hook "hookdisplayCustomerAccount"
-dans le fichier maboutique.com/mon_module/views/templates/front/mon_fichier_tpl.tpl tu pourra récupérer l'id client avec {$id_client} , si tu testes ton module avec https://validator.prestashop.com/ il faudra mettre par exemple {$id_client|escape:'htmlall':'UTF-8'}
-tu trouvera ici : http://www.smarty.net/docsv2/fr/language.modifier.escape.tpl les détails sur escape en smarty
 
Si tu as un tableau à envoyer vers smarty, exemple :
 
$donnees = array('couleur' => 'bleu', 'taille' => 36);
$this->context->smarty->assign('datas', $donnees);
 
dans ton fichier maboutique.com/mon_module/views/templates/front/mon_fichier_tpl.tpl il faudra mettre {$datas.couleur} pour avoir bleu ou {$datas.couleur|escape:'htmlall':'UTF-8'}
 
6- la fonction getContent est à utiliser pour la configuration du module, ce n'est pas elle qui permet d'afficher quelque chose sur le front office
  • Like 1
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...