Jump to content

[Résolu] Comment récupérer le pays d'un utilisateur enregistré


Recommended Posts

Bonjour,


Je suis plutot nouveau dans l'univers prestashop. Pour customiser une boutique, je tente de developper un module très simple.

Pour cela, j'ai besoin du pays de l'utilisateur (code iso du pays), lorsque celui-ci est enregistré.
Je peux vérifier que l'utilisateur est bien loggé par :

    if ($cookie->isLogged())


Je pensais ensuite (surement naivement), récupérer cette info via :

 $country = new Country(intval(Tools::getValue('id_country')));
$country_iso = $country->iso_code;



mais cela ne fonctionne pas.

J'ai conscience de poser une question un peu basique...

Par ailleurs, si il existe une doc un peu fournie sur le dev prestashop, je suis preneur...parce que pour le moment, j'y vais à tatons, avec plus ou moins de succès


Merci!

Link to comment
Share on other sites

Sauf erreur, et à froid ... mais je ne sais pas si c'est le plus rapide:
Le code pays d'un client est dans la table address donc

public function getLoggedCustomerCountry()
{
  $country = null
  if (isset($cookie->id_customer)) 
  //  on a l'id donc il est loggué (chez moi $cookie->isLogged n'existe pas , c'est plutot $cookie->Logged non ?)
  {
     $cust = new Customer($cookie->id_customer); 
     $adresses = $cust->getAdresses($cookie->id_lang);
     if( count($adresses >0 )) 
     {
         // je choisis la première retournée mais on peut aussi faire une boucle et les tester toutes...
         $country = new Country($adresses[0]->id_country) ; 
     }
  }
  return $country;
}



voilà et dans ton module tu appelles la fonction avec

$country = $this->getLoggedCustomerCountry()



ça devrait marcher (pas testé), après tu fait ce que tu veux de l'objet $country (iso code etc ... ), s'il est non null

Link to comment
Share on other sites

Je vais essayer ca tout de suite!
Merci d'avoir pris le temps d'aider un novice.

2 petites questions :

- d'où viennent ces infos (le pays fait partie de l'adresse, l'utilisation de l'objet customer, etc...) : j'ai un peu parcouru le code, mais y'a t'il une doc précise?

- est t'il possible de s'inscrire sans renseigner de pays?

MERCI

Link to comment
Share on other sites

- d'ou viennent les infos :

C'est une méthode assez simple ...
Je puise la plupart de ces infos des classes elles mêmes : dossier /classes
Tu y trouve les méthodes et propriétés de chaque objet ...
Egalement de la base de données .
Par exemple si tu édites la structure de la table customer , tu te rendras compte qu'il n'y a pas de champ pays.
Ce champ , si tu fouille un peu, tu le trouves dans la table address .
En toute logique , il te faut donc l'adresse.
Pour savoir à quoi ressemble ton cookie , selon que tu es ou non loggué , tu peux placer dans ton code :
Global $cookie;
var_dump($cookie);
C'est pas beau mais terriblement efficace.
Tu découvres donc que id_customer existe seulement si tu es loggué.

Ensuite tu prends les choses à l'envers et ça fait la culbute :
- Je teste et récupère id_customer dans le cookie
- Je crée un customer à partir de cet id (il suffit de regarder le constructeur de la classe Customer.php)
- J'appelle $moncustomer->getAddresses($cookie->id_lang) // c'est aussi visible dans la classe
etc ....
Il existe également un site ou sont en principe répertoriées toutes les classes , que je n'ai plus en tête .

Enfin globalement tu trouveras toutes ces infos dans le code lui même, si tu as méthode et patience.

- Pour la deuxième question , il n'est pas possible de s'enregistrer sans le pays, en l'état

Link to comment
Share on other sites

  • 5 months later...

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