Les triggers utilisés dans les appels AJAX

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

Ces fichiers, permettent littéralement « d’incruster » des blocs php à un endroit précis.

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

Lors d’appels utilisant ajax_exe, ces derniers se chargent d’inclure le trigger correspondant. Si aucun trigger, ni aucune action de base ne sont trouvée, la page n’affiche aucun retour .

Généralitées

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

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

Structure des fichiers de triggers.

Ces fichiers sont de simples fichier php , portant l’extension « .inc ».

Ils 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 dès l’installation, celui de la prise en charge de l’appel ajax qui affiche l’état 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 écho , représente la sortie qui sera utilisée dans un innerHTML. Il est bien sûr possible de donner une autre forme à la sortie, comme un format JSON.

Exemple d’utilisation

Les appels js, peuvent être utilisés à de nombreux endroits, aussi , nous ne verrons qu’un exemple d’utilisation, qui est l’appel du triggers ’create_account’. Ce dernier se situe dans le fichier includes/js/create_account.js.php

Il se résume 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 à exécuter.

Note

  • USAGE DES ÉLÉMENTS DE LANGUE
    • Les triggers sont les rares éléments à ne pas avoir leur propre fichier de langues, ils doivent donc utiliser les fichiers déjà chargés. Aussi le fichier de langue principale du template semble le plus approprié, ou s’il s’agit d’un élément du core, le fichier de langue principale (le master).

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *