public static function Radios::processRadios

public static Radios::processRadios(&$element, FormStateInterface $form_state, &$complete_form)

Expands a radios element into individual radio elements.

File

core/lib/Drupal/Core/Render/Element/Radios.php, line 55

Class

Radios
Provides a form element for a set of radio buttons.

Namespace

Drupal\Core\Render\Element

Code

public static function processRadios(&$element, FormStateInterface $form_state, &$complete_form) {
  if (count($element['#options']) > 0) {
    $weight = 0;
    foreach ($element['#options'] as $key => $choice) {
      // Maintain order of options as defined in #options, in case the element
      // defines custom option sub-elements, but does not define all option
      // sub-elements.
      $weight += 0.001;

      $element += array($key => array());
      // Generate the parents as the autogenerator does, so we will have a
      // unique id for each radio button.
      $parents_for_id = array_merge($element['#parents'], array($key));
      $element[$key] += array(
        '#type' => 'radio',
        '#title' => $choice,
        // The key is sanitized in Drupal\Core\Template\Attribute during output
        // from the theme function.
        '#return_value' => $key,
        // Use default or FALSE. A value of FALSE means that the radio button is
        // not 'checked'.
        '#default_value' => isset($element['#default_value']) ? $element['#default_value'] : FALSE,
        '#attributes' => $element['#attributes'],
        '#parents' => $element['#parents'],
        '#id' => HtmlUtility::getUniqueId('edit-' . implode('-', $parents_for_id)),
        '#ajax' => isset($element['#ajax']) ? $element['#ajax'] : NULL,
        // Errors should only be shown on the parent radios element.
        '#error_no_message' => TRUE,
        '#weight' => $weight,
      );
    }
  }
  return $element;
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Render!Element!Radios.php/function/Radios::processRadios/8.1.x