Jump to content

[Résolu] AdminTab : Tri décroissant sur un champ datetime (date_add)


RUNps

Recommended Posts

Bonjour à tous

 

A savoir que c'est mon tout 1er post, je suis donc un tout nouveau Prestashopien :rolleyes:

(ç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. :huh:

 

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

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

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

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