Search code examples
phpdrupaldrupal-webform

How do I only show fields that have values, and hide fields that do not have values?


I am trying to get this code to show only fields that have values, any fields that don't have values are not meant to be displayed. It doesn't seem to be working

Any idea what I am doing wrong?

My simple test form is here http://www.healthybrighton.co.uk/wse/node/1844

/**
 * Build a table of submitted values
 *
 * @param $form_vals array Submitted form data
 * @param $select_mapping array Map select components to their value|label chocies
 * @return HTML of the themed table
 */       
function _format_form_state($form_vals = array(), $select_mapping) {
  $output = '';  
  $header = array();
  $rows = array();    

  if (!empty($form_vals)) {
    
    foreach ($form_vals as $component_name => $component_value) {
      $rows = array_merge(
        $rows,
        _add_component_row(
          $component_name,
          $component_value,
          0,
          $select_mapping
        )
      );
    }
  }
  
  

  $output .= theme('table', $header, $rows);
  return $output;
}

Solution

  • /**
     * Build a table of submitted values
     *
     * @param $select_mapping array Map select components to their value|label chocies
     * @param $values array Submitted form data
     * @return HTML of the themed table
     */
    function _format_form_state($select_mapping, $values = array()) {
      $header = array(t('First'), t('Second'), t('Third'), t('Fourth'));
      $rows = array();
    
      foreach ($values as $cname => $cval) {
        $rows[] = array($cname, $cval, 0, $select_mapping);
      }
    
      return theme_table($header, $rows);
    }
    

    $select_mapping should be first argument in function. Argument with default value should not be preceded by argument without a default value.