[résolu] problème pour peupler ma liste déroulante

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.PNG11.21 Ko
#

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;
}
 
}

Syndiquer le contenu