Catégories:
Bonjour,
J'ai un petit problème, J'essaie de faire un formulaire, avec un champ de type 'select' mais impossible de peupler cette liste déroulante.
J'ai tout d'abord commencé par faire mon formulaire avec un champ de type 'textfield' et tout fonctionne. Cependant quand je change ce champ en type 'select' je n'arrive pas à récupérer les valeurs qui doivent peupler ma liste déroulante ('#options')
function smwqueries_get_bioagresseur(){
global $smwbaseurl;
//envoyer une requête à smw api
$url = $smwbaseurl ."/api.php?format=xml&action=ask&q=[[Catégorie:Bioagresseur]] ";
$headers = array();
$method='GET';
$data = array();
$response = drupal_http_request($url, $headers, $method, $data, 1);
$xml= new SimpleXMLElement ($response->data);
foreach ($xml->ask->results->items[0] as $item){
$type=(string)$item->properties['type'];
$uris .= t($type)."<br>";
}
switch ($response->code){
//case 200, si c'est OK
case 200 :
return $uris;
break;
}
}
function smwqueries_form(){
$form=array();
$bio = smwqueries_get_bioagresseur();
$form['get_bioagresseur'] = array(
'#title'=> t('Qui a le même problème de bioagresseur ?'),
'#type' => 'select',
'#description' => t('Choisir un bioagresseur'),
'#options' => $bio,
'#default_value' => variable_get('get_bioagresseur',t('Chardon')),
);
$form['submit'] = array(
'#type'=>'submit',
'#value'=>t('Trouver les agriculteurs'),
);
return $form;
}| Fichier attaché | Taille |
|---|---|
| Capture.PNG | 11.21 Ko |
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

C’est bon j’ai trouvé ma réponse toute seule, c’était en fait que ma fonction smwqueries_get_bioagresseur() ne retournait pas un tableau et l’attribut ‘#options’ a besoin d’un tableau
function smwqueries_get_bioagresseur(){
global $smwbaseurl;
//envoyer une requête à smw api
$url = $smwbaseurl ."/api.php?format=xml&action=ask&q=[[Catégorie:Bioagresseur]] ";
$headers = array();
$method='GET';
$data = array();
$response = drupal_http_request($url, $headers, $method, $data, 1);
$xml= new SimpleXMLElement ($response->data);
$i=0;
foreach ($xml->ask->results->items[0] as $item){
$type=(string)$item->properties['type'];
$uris[$i]=$type;
$i++;
}
switch ($response->code){
//case 200, si c'est OK
case 200 :
return $uris;
break;
}
}
Eva
7