Accueil du site > Wiki > osCSS 2.xxx > Developpeurs > template public > les triggers, utilisé dans les appels AJAX

les triggers, utilisé dans les appels AJAX

mardi 25 janvier 2011, par oscim

Depuis peu, fort recement même , puisque datant d’hier, la possibilité d’utiliser des triggers.

ces fichiers, permettent littéralement "d’incruster" des block php à un endroit precis.

Ces triggers, sont utilisé de manière automatique , dans les appels ajax. Ces denier passe en fait par le fichier ajax_exe.php situé à la racine du site.

Lors d’appel utilisant ajax_exe, ce dernier ce charge d’inclure le trigger correspondant. Si aucun triggers, ni aucune action de base n’est trouvé, la page n’affiche aucun retour .

Généralitées

Les fichier de triggers sont stocké dans le répertoire triggers de l’include. Il supporte bien sur la surcharge, est donc, être redéfini et/ou modifié dans le include du template.

PS : comme tous les fichier pouvant être surclassé, la détection des fichier à utilisé est mise en cache si celui-ci est actif

Structure des fichiers de triggers.

Ces fichier sont de simple fichier php , portant l’extension ".inc".

Il ont la structure suivante :

<?php
/**
  @licence GPL 2005-2011  The osCSS developers - osCSS Open Source E-commerce
  @portion code Copyright (c) 2002 osCommerce
  @package osCSS-2 <www http://www.oscss.org>
  @version 2.1.0
  @date  24/01/11, 19:24
  @author oscim <mail aurelien@oscim.fr> <www http://www.oscim.fr>
  @encode UTF-8
*/

// ......votre contenu
?>

Exemple d’un des triggers d’oscss, présent des l’installation, celui de la prise en charge de l’appel ajax qui affiche l’etat correspondant au pays sélectionné dans la création de compte.

<?php
/**
  @licence GPL 2005-2011  The osCSS developers - osCSS Open Source E-commerce
  @portion code Copyright (c) 2002 osCommerce
  @package osCSS-2 <www http://www.oscss.org>
  @version 2.1.0
  @date  24/01/11, 19:24
  @author oscim <mail aurelien@oscim.fr> <www http://www.oscim.fr>
  @encode UTF-8
  @brief code is part of execution select country after state by ajax control
*/

$country = tep_db_prepare_input($_GET['country']);
$zones_array = array();
$zones_query = $DB->query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "' order by zone_name");
while ($zones_values = $zones_query->fetchAssoc()) {
  $zones_array[] = array('id' => $zones_values['zone_name'], 'text' => $zones_values['zone_name']);
}
echo tep_draw_pull_down_menu('state','state', $zones_array);
?>

Noter que la sortie echo , représente la sortie qui sera utilisé dans un innerHTML. Il est bien sur possible de donner une autre forme à la sortie, comme un format JSON.

Exemple d’utilisation

Les appels js, peuvent êtr utilisé a de nombreux endroit, aussi , nous ne verront qu’un exemple d’utilisation, qui est l’appel du triggers ’create_account’. Ce dernier ce situe dans le fichier includes/js/create_account.js.php

Il ce resume comme suit :

//...
 // Listes liées
 $("#state").parent().hide();
 $("#country").change( function () {
     $.get("./ajax_exe.php", { action:"create_account", country: this.value },
     function success(data) {
       $("#state").replaceWith(data);
       if ($(data).val() == null) {
         $("#state").parent().hide();
       } else {
         $("#state").parent().show();
       }
     });
 });
//....

Lors de l’appel vers le fichier ajax_exe.php, il est nécessaire de passer en GET l’argument "action", portant le nom du triggers a executer.

Note

  • usage des éléments de langue
    • Les triggers sont les rares éléments a ne pas avoir leu propre fichier de langue, il doivent donc utiliser les fichier déjà chargé. Aussi le fichier de langue principal du template semble le plus approprié, ou si il s’agit d’un element du core, le fichier de langue principal (le master)