maxwell59 Posted December 13, 2010 Share Posted December 13, 2010 Bonjour à tous Voilà je débute sous presta. et en tentant de créer un module je rencontre un problème pour afficher un listing de produit selon un champ ajouter à la table product (cdc)Voici mon code de mon constuct : public function __construct() { global $cookie, $_LANGADM; $this->table = 'product'; $this->className = 'Product'; $this->lang = false; $this->edit = true; $this->view = true; $this->delete = true; $this->deleted = true; $this->requiredDatabase = true; $this->_select= '`id_product` as ID'; $this->_where ='AND `cdc`=1'; $this->_group = 'GROUP BY `id_product`'; //les champs à afficher $this->fieldsDisplay = array( 'id_product' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 20) ); $langFile = _PS_MODULE_DIR_.$this->module.'/'.Language::getIsoById(intval($cookie->id_lang)).'.php'; if(file_exists($langFile)) { require_once $langFile; foreach($_MODULE as $key=>$value) if(substr(strip_tags($key), 0, 5) == 'Admin') $_LANGADM[str_replace('_', '', strip_tags($key))] = $value; } parent::__construct(); } ma fonction display : public function display($token = NULL) { global $currentIndex; echo ''.$this->l('Current category').' : '.getPath($catBarIndex, $id_category).''; echo ''.$this->l('Featured Products').''; echo ' '; echo ''.$this->l('Products in this category').''; $this->displayList(); } Et enfin ma fonction DisplayList (faut-t-il vraiment l'implémenter...) public function displayList($token = NULL) { global $currentIndex; /* Display list header (filtering, pagination and column names) */ $this->displayListHeader($token); if (!sizeof($this->_list)) echo ''.$this->l('No items found').''; /* Show the content of the table */ $this->displayListContent($token); /* Close list table and submit button */ $this->displayListFooter($token); } Pas moyen d'obtenir mon résultat (liste d'id de produit...)Merci par avance Link to comment Share on other sites More sharing options...
melthius Posted May 10, 2011 Share Posted May 10, 2011 Bonjour,En fait, dans le cas où tu n'as pas de cas particulier, tu n'as juste qu'a remplir le constructeur de ta classe.Ici en l'occurrence, tu n'a pas besoin a priori de : $langFile = _PS_MODULE_DIR_.$this->module.'/'.Language::getIsoById(intval($cookie->id_lang)).'.php'; if(file_exists($langFile)) { require_once $langFile; foreach($_MODULE as $key=>$value) if(substr(strip_tags($key), 0, 5) == 'Admin') $_LANGADM[str_replace('_', '', strip_tags($key))] = $value; } De plus, ta requete comporte une erreur semble t-il : - Ton _select peu rester vide car tu y a mis une colonne qui est déja affichée de base.Quand tu renseigne la variable "table" avec "product", cela affiche systématiquement tous les champs de ta table product, dont ton id_product- je ne vois pas l'intérêt de ton _groupby iciTon fieldsDisplay contient aussi une erreur car tu dis dans ta requete que ton champs sera libellé comme "ID" (as ID) mais ensuite dans ton tableau tu lui dis que c'est le champ "id_product" (le $this->l('ID') ne permet pas le lien avec ta requete, c'est juste le nom de la colonne ton tableau html, c'est bien le "id_product" que tu as au début de ta ligne qui s'assure de faire le lien avec ta requete)Enfin, concernant les 2 autres méthodes que tu as implémenté, elles ne sont pas nécessaires ici. L'affichage est géré automatiquement par Presta a partir de ton Constructeur s'il est bien rempli.Etant également débutant sur Prestashop il se peut que je me trompe sur certains points, n'hésitez donc pas a me corriger si besoin.PS : On ne le vois pas dans le fragment de code que tu as mis : Ta classe hérite t-elle bien de la classe "AdminTab" ? 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