0

Elgg: principe de l’input pulldown

Print Friendly, PDF & Email

[ A+ ] /[ A- ]

Article publié le 8 juillet 2011

L’input pulldown fonctionne comme tous les inputs: il lui faut un nom, des valeurs, etc.. Mais le pulldown représente un <select>, par conséquent, il y a des différences par rapport à un input normal.

Voici l’exemple d’utilisation d’un pulldown:

<?php
echo elgg_view('input/pulldown', array('internalname'=>'r',
                                       'options_values'=>array('1'=>'A','2'=>'B')
                                       )
               );
?>

elgg_view aide à la mise en page mais pour l’affichage réel de votre liste de choix, vous devez ajouter l’instruction php echo.

Comme paramètres, vous passez ce que vous voulez voir, dans notre cas, un input/pulldown et les attributs de celui-ci dans un tableau:

  • internalname = nom du<select>
  • options_values = ce qui sera inscrit entre les balises <option></option> et l’attribut value de celle-ci, également dans un tableau

La structure peut être comprise ainsi:

<?php
echo elgg_view('input/pulldown',
                      array('internalname'=>'name_select',
                             'options_values'=>array('value_option'=>'texte_entre_les_balises_option',
                                                      'value_option'=>'texte_entre_les_balises_option'
                                                     )
                            )
               );
?>

Ceci donnera, en HTML:

<select name="r">
<option value="1">A</option>
<option value="2">B</option>
</select>

Mais comment faire un pulldown quand des données viennent de la base de données?

Dans Elgg, vous devez d’abord récupérer vos objets concernant votre liste de choix, en utilisant elgg_get_entities (on précise le type d’entité à récupérer ainsi que son genre)

$ressources = elgg_get_entities(array('type'=>'object','subtype'=>'ressource'));

Ensuite, pour être sûr de traiter le bon objet, vous avez besoin de son GUID (numéro unique dans toute la base de données) et de son nom (title dans Elgg). Pour cela, il suffit de faire un tableau de cette manière:

foreach ($ressources as $r){
$titles[$r->guid] = $r->title;
}

Alors pourquoi mettre comme indice le GUID? Si vous ne le faites pas, au moment de construire le pulldown, Elgg considérera comme « value » à mettre l’indice par défaut (0,1,2,3, etc.), ce qui ne correspondra pas au GUID de votre objet. Cela rendra donc le traitement de celui-ci plus compliqué s’il s’agit d’une mise à jour: il vous sera quasi-impossible de le trouver. Aussi, pour qu’Elgg prenne comme « value » le GUID, vous devez remplacer l’index par défaut par celui-ci.

Ensuite, il ne restera plus qu’à coder l’input de cette manière:

<?php echo elgg_view('input/pulldown', array('internalname'=>'ressource', 'options_values'=>$titles));?>

$titles est bien un tableau, comme requis dans le principe de base.

Vous obtiendrez alors ce que vous voulez:

<select name="ressource">
<option value="13">Caméra 11</option>
<option value="8">Caméra 23</option>
</select>

Cette ligne-là est donc très importante dans votre foreach:

$titles[$r->guid] = $r->title;

A présent, vous pouvez manipuler l’input pulldown et passer au moins le GUID et le title de vos objets!

Vous avez trouvé l'article intéressant? Partagez-le!

Vinciane

Conseillère pédagogique et développeuse PHP, passionnée de nouvelles technologies, de l'histoire (particulièrement l'Antiquité et la Second Guerre Mondiale) et des jeux vidéo, j'aime écrire, tester et partager.

Laisser un commentaire

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

2 + sept =