Accueil du site > Wiki > osCSS 2.xxx > Developpeurs > Les modules > Interface InterfacedTJsonS

Interface InterfacedTJsonS

mardi 27 juillet 2010, par oscim

Cette interface structure la gestion des listings, couplée au javascript, afin de produire des tableaux, appelés en ajax, et intégrant, les tris, les nombres de lignes, la recherche global et/ou par colonne, etc... .

Cette interface est donc utilisée pour toutes les listes de produits, commande, clients..

Nous allons voir ici comment exploiter ces tableaux.

Étape 1, déclaration de l’interface

Ajouté au interface déjà présent, ou ajouté la mention implements et le nom de cet interface.

class categories
    implements  InterfacedTJsonS{
....
}

Étape 2, les méthodes associé

La déclaration de l’interface pour la class (ex catégories) impose de déclarer les méthodes suivante ; sans quoi vous aurez une erreur php.

Méthode tep_get_modele()

cette méthode public, permet de récupérer un tableau des élément triables du tableau . Le tableau ce doit de définir les colonne dans l’ordre du tableau affiché, et donc la base (balise table et entête) est structuré dans les fichiers de gabarits.

  public static function tep_get_modele(){
      return array(  'categories_id',
                  'categories_image',
                  'categories_name',
                  'categories_status',
                  'categories_hidden',
              );
  }

Note, cette méthode est public et static

Méthode function tep_get_list()

C’est cette méthode qui construit le tableau de base qui sera affiché, elle doit intégrer une requête sql permettant le tri et la recherche.

De plus, elle doit renvoyer un tableau ne contenant strictement que les éléments destinés à l’affichage. Si le nombre de colonne ne correspond pas, une erreur js se produira et le tableau ne s’affichera pas.

Elle doit aussi assurer la fonction de split page pour régler le nombre de ligne par page.

Ex pour le module categories

  public static function tep_get_list($page=1,$rowbyp=10,$sOrder='',$sWhere='',$options=''){
    global $languages_id,$query_numrows;
    $cID=(int)(empty($current_ID)?0:$current_ID );
    $DB=Database::getInstance();
    $categories_query = "select c.categories_id, cd.categories_name, c.categories_image, c.parent_id, c.sort_order, c.date_added, c.last_modified,c.categories_status,c.categories_hidden, cd.categories_description, cd.categories_head_keywords_tag from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . $cID . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' ".$sWhere." order by  ".((!empty($sOrder)) ? $sOrder : " c.parent_id ASC , c.sort_order ASC, cd.categories_name ASC");
    $categories_split = new splitPageResults($page, $rowbyp, $categories_query,$query_numrows);
    $pq=$DB->query($categories_query);
    while ($categories = $pq->fetchAssoc()) {
      $categories['categories_image']=(!empty($categories['categories_image'])) ? tep_info_image($categories['categories_image'], $categories['categories_name'], TEMP_BO_SMALL_IMAGE_WIDTH, TEMP_BO_SMALL_IMAGE_HEIGHT) : ' N/A';
      $categories['categories_status']=self::get_status_categories($categories);
      $categories['categories_hidden']=self::get_status_menu($categories);
      self::$list[]=$categories;
    }
    $li=$res=array();
    foreach(self::$list as $item){
      $li[0]=$item['categories_id'];
      foreach(self::tep_get_modele() as $k) $li[$k]=(isset($item[$k]) && !empty($item[$k]))? $item[$k] : 'N/A';
      $li['action']=self::get_item_action($item);
      $res[]=$li;
    }
    if(count($res)==0) $res[]= self::emptyResult();
    return $res;
  }

Note : pour chaque tableau (dans noter exemple $li), la clef ’0’ doit correspondre à l’id (ici de la categorie). Cet element est normalisé, et assure la liaison avec l’interface InterfacedInnerHtml

les arguments passé à cette fonction sont normalisés, tel que

  • $page=1 (page en cours )
  • $rowbyp=10 (nombre de ligne du tableau )
  • $sOrder=’’ (colonnes de tri)
  • $sWhere=’’ (champs de recherche)
  • $options=’’

Note, cette méthode est public et static

Core Backoffice

Cet interface n’est disponible que dans le backoffice, il est définis par le fichier class.interfaces.php

Répondre à cet article