Search code examples
drupalformstaxonomy

drupal - add select/option list to a form


I am a bit confused. I have created a simple form with a one text box and a submit button. Now I want to add a select/option dropdown box of taxonomy terms, using the taxonomy_get_vocabularies() function.

 $vocabularies = taxonomy_get_vocabularies('my_type'); 

My question is how do I get vocabulary list onto form "the Drupal way". The way Drupal defines form seem quite rigid. Also how could I make this conditionl, say on existence of relevant taxonomy terms.

function my_form_name($form_state) {

// A Short question.
  $form['title'] = array(
    '#type' => 'textfield',
    '#title' => t('Question'),
    '#default_value' => $node->title,
    '#required' => TRUE,
    '#weight' => 1,
    '#description' => t('A text box goes here '),   
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('submit'),
    '#weight' => 7,
  );

  return $form;

Solution

  • I'm doing something similar in a custom form, and found it much easier to use taxonomy_get_tree, with the vocabulary code as the function's argument. See below:

    //get the list of locations from taxonomy to use in the dropdown
    $dropdown_source = taxonomy_get_tree(2);
    $dropdown_array = array('0' => '--none--');
    foreach ($dropdown_source as $item) {
    $key = $item->tid;
    $value = $item->name;
    $dropdown_array[$key] = $value;
    }
    
    //location filter dropdown
    $form['filterset']['locationfilter'] = array(
      '#weight' => '1',
      '#key_type' => 'associative',
      '#multiple_toggle' => '1',
      '#type' => 'select',
      '#options' => $dropdown_array,
      '#title' => 'Filter by location',
    );
    
    unset($dropdown_array);