Jump to content

Affichage DisplayList


Recommended Posts

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

  • 4 months later...

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 ici



Ton 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

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