RUNps Posted November 24, 2011 Share Posted November 24, 2011 Bonjour à tous A savoir que c'est mon tout 1er post, je suis donc un tout nouveau Prestashopien (ça fait quelques mois que j'y travail cependant). J'ai créé un module qui ajoute un nouvel onglet dans la partie Admin (un système de ticket, histoire de me faire "la main"). Je souhaiterais faire un tri décroissant par défaut sur la date de création des tickets (champ date_add, type datetime). J'ai pourtant pris exemple sur la classe AdminCart qui appriori effectue cela, mais rien n'y fait. Dans ma classe AdminTickets j'ai le code suivant (je simplifie) : class AdminTickets extends AdminTab { public function __construct() { $this->table = 'tickets'; $this->className = 'Tickets'; $this->fieldsDisplay = array('id_ticket' => array('title' => 'ID', 'width' => '30px', 'align' => 'right', 'orderby' => FALSE), 'date_add' => array('title' => 'date', 'type' => 'datetime', 'orderby' => FALSE, 'filter_key' => 'a!date_add')); } } J'ai aussi fais un essai en rajoutant ce code dans le constructeur, mais là aussi sans effet. $this->_orderBy = 'date_add'; $this->_defaultOrderBy = 'date_add'; $this->_orderWay = 'DESC'; A mon sens il faudrait rajouter un élément dans la tableau de la propriété "fieldsDisplay" qui indiquerait la manière de faire le tri (genre : orderby => ASC ou DESC), mais j'ai rien vu de tel, où ça m'a échappé. Comment donc forcer ce tri par défaut ? Merci de votre aide Link to comment Share on other sites More sharing options...
luci1 Posted November 24, 2011 Share Posted November 24, 2011 Bonjour, En creusant dans le code , tu remarqueras que la requête sql utilisée dans la fonction getList() de la classe AdminTab, se base sur la variable cookie, essaies avec ça : $cookie->$orderby = ( isset( $cookie->$orderby ) ) ? $cookie->$orderby : date_add'; $cookie->$orderway = ( isset( $cookie->$orderway ) ) ? $cookie->$orderway : 'DESC'; Link to comment Share on other sites More sharing options...
RUNps Posted November 24, 2011 Author Share Posted November 24, 2011 Effectivement, je n'avais pas encore parcouru le code de getList(). C'est chose faite. En me basant sur ton code, j'obtenais une erreur me disant que $orderby et $orderway n'éxistaient pas. Sauf erreur, il me semble qu'on ne peu pas créer directement ainsi une nouvelle valeur au cookie, mais le faire en utilisant la méthode magique __set($key, $value). Dans le constructeur de AdminTickets, j'ai effectué (rajouté) ceci : if (!$cookie->__get($this->table.'Orderby')) $cookie->__set($this->table.'Orderby', 'date_add'); if (!$cookie->__get($this->table.'Orderway')) $cookie->__set($this->table.'Orderway', 'DESC'); Et cette fois j'obtiens bien un ordre décroissant. Impeccable. Merci pour ton aide. Link to comment Share on other sites More sharing options...
luci1 Posted November 24, 2011 Share Posted November 24, 2011 De rien, Un petit [RESOLU] du coup ? 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