vzvz Posted October 15, 2010 Share Posted October 15, 2010 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èsMerci! Link to comment Share on other sites More sharing options...
Broceliande Posted October 15, 2010 Share Posted October 15, 2010 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 More sharing options...
vzvz Posted October 15, 2010 Author Share Posted October 15, 2010 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 More sharing options...
Broceliande Posted October 15, 2010 Share Posted October 15, 2010 - 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 /classesTu 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 More sharing options...
vzvz Posted October 18, 2010 Author Share Posted October 18, 2010 Merci, à quelques modifs / corrections pres, j'ai réussi à faire ce que je souhaitais grace à ces infosMerci!!! Link to comment Share on other sites More sharing options...
axi Posted April 14, 2011 Share Posted April 14, 2011 Deux erreurs corrigées: $cust->getAddresses($cookie->id_lang); deux "d" à adresseet $country = new Country($adresses[0['id_country'] ; Link to comment Share on other sites More sharing options...
Broceliande Posted April 14, 2011 Share Posted April 14, 2011 Deux erreurs corrigées: $cust->getAddresses($cookie->id_lang); deux "d" à adresseet $country = new Country($adresses[0['id_country'] ; bien vu , mais j'avais bien dit :Sauf erreur, et à froid … mais aussi : (pas testé) le forum n'est pas l'IDE idéal... 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