Module CustomFields Cases FR
Ici vous pourrez trouver une compilation de cas pratiques d'implémentations de CustomFields et de ses fonctionnalités.
Si vous avez fait l'expérience de CustomFields pour une implémentation, vous pouvez également rajouter ici votre propre cas d'exemple afin que d'autres utilisateurs puissent s'en inspirer.
Fonctions d'overload
Le but est d'afficher dans le module tiers deux champs: un qui donne le secteur du tiers (isere,alpes du sud, haute savoie...) et l'autre qui en fonction du secteur donne la liste des stations de ski du secteur choisi.
Une table llx_k_station (rowid,station (char50),secteur(char50))composée de la sorte : 1,les 2 alpes,isère 2,chamrousse,isère 3,alpe d'huez,isère 4,vars,alpes du sud 5,risoul,alpes du sud....
Dans le module tiers 2 champs CF: 1-secteur:renvoie la listes des secteurs - type liste: enum('- Aucun','Alpes du Sud','export','Haute-Savoie','Isère'....) 2-station_a: renvoie toutes les stations - type par défaut mais contrainte sur llx_k_station
Le code dans customfields_fields_extend.lib.php qui va permettre en fonction du secteur choisi lors de la modifiaction de n'afficher que les stations correspondantes:
function customfields_field_editview_societe_station_a (&$currentmodule, &$object, &$parameters, &$action, &$user, &$idvar, &$rightok, &$customfields, &$field, &$name, &$value) {
global $db; // allow to access database functions
$sql="SELECT llx_k_station.station, llx_k_station.rowid FROM llx_societe_customfields INNER JOIN llx_k_station ON llx_societe_customfields.Secteur = llx_k_station.secteur WHERE llx_societe_customfields.fk_societe=".$object->id;
$result=$db->query($sql);
if ($result) {
$num = $db->num_rows($result);
$i = 0;
$myarray = array();
while ($i < $num)
{
$obj = $db->fetch_object($result);
$myarray []=array('id'=>$obj->rowid, 'value'=>$obj->station);
$i++;
}
$value = $myarray;
$db->free($result);
}
}
Merci à manub pour avoir donné cet example de cas.