API page: https://api.drupal.org/api/drupal/includes%21form.inc/function/theme_rad...

Enter a descriptive title (above) relating to function theme_radio, then describe the problem you have found:

if (isset($element['#return_value']) && $element['#value'] !== FALSE && $element['#value'] == $element['#return_value']) {
----
this is wrong, because is default_value is false and option with key 0 is present - then 0 is selected by default

Comments

Mykola Dolynskyi created an issue. See original summary.

cilefen’s picture

Mykola Dolynskyi’s picture

as #value can be missing in element array (see form_radio_preprocess()) code should look like this

function theme_radio($variables) {
  $element = $variables['element'];
  $element['#attributes']['type'] = 'radio';
  element_set_attributes($element, array('id', 'name', '#return_value' => 'value'));

  $valattr = isset($element['#value']) ? '#value' : '#return_value';
  $defvalattr = isset($element['#value']) ? '#value' : '#default_value';

  if(isset($element[$defvalattr]) && $element[$defvalattr] !== FALSE) {
    if (isset($element['#return_value']) && $element[$valattr] !== FALSE && (isset($element[$defvalattr]) && ($element[$defvalattr] == $element['#return_value']))) {
      $element['#attributes']['checked'] = 'checked';
    }
  }
  _form_set_class($element, array('form-radio'));

  return '<input' . drupal_attributes($element['#attributes']) . ' />';
}