class Radio

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Render/Element/Radio.php \Drupal\Core\Render\Element\Radio
  2. 8.9.x core/lib/Drupal/Core/Render/Element/Radio.php \Drupal\Core\Render\Element\Radio
  3. 10 core/lib/Drupal/Core/Render/Element/Radio.php \Drupal\Core\Render\Element\Radio

Provides a form element for a single radio button.

This is an internal element that is primarily used to render the radios form element. Refer to \Drupal\Core\Render\Element\Radios for more documentation.

Hierarchy

Expanded class hierarchy of Radio

See also

\Drupal\Core\Render\Element\Radios

\Drupal\Core\Render\Element\Checkbox

10 string references to 'Radio'
claro_preprocess_input in core/themes/claro/claro.theme
Implements template_preprocess_HOOK() for input.
ContentTranslationHandler::addTranslatabilityClue in core/modules/content_translation/src/ContentTranslationHandler.php
Adds a clue about the form element translatability.
DrupalSelenium2Driver::setValue in core/tests/Drupal/FunctionalJavascriptTests/DrupalSelenium2Driver.php
ElementTest::testOptions in core/modules/system/tests/src/Functional/Form/ElementTest.php
Tests expansion of #options for #type checkboxes and radios.
FormElementsRenderTest::testDrupalRenderFormElements in core/modules/system/tests/src/Kernel/Common/FormElementsRenderTest.php
Tests rendering form elements without using doBuildForm().

... See full list

File

core/lib/Drupal/Core/Render/Element/Radio.php, line 17

Namespace

Drupal\Core\Render\Element
View source
class Radio extends FormElementBase {
    
    /**
     * {@inheritdoc}
     */
    public function getInfo() {
        $class = static::class;
        return [
            '#input' => TRUE,
            '#default_value' => NULL,
            '#process' => [
                [
                    $class,
                    'processAjaxForm',
                ],
            ],
            '#pre_render' => [
                [
                    $class,
                    'preRenderRadio',
                ],
            ],
            '#theme' => 'input__radio',
            '#theme_wrappers' => [
                'form_element',
            ],
            '#title_display' => 'after',
        ];
    }
    
    /**
     * Prepares a #type 'radio' render element for input.html.twig.
     *
     * @param array $element
     *   An associative array containing the properties of the element.
     *   Properties used: #required, #return_value, #value, #attributes, #title,
     *   #description. The #name property will be sanitized before output. This is
     *   currently done by initializing Drupal\Core\Template\Attribute with all
     *   the attributes.
     *
     * @return array
     *   The $element with prepared variables ready for input.html.twig.
     */
    public static function preRenderRadio($element) {
        $element['#attributes']['type'] = 'radio';
        Element::setAttributes($element, [
            'id',
            'name',
            '#return_value' => 'value',
        ]);
        // To avoid auto-casting during '==' we convert $element['#value'] and
        // $element['#return_value'] to strings. It will prevent wrong true-checking
        // for both cases: 0 == 'string' and 'string' == 0, this will occur because
        // all numeric array values will be integers and all submitted values will
        // be strings. Array values are never valid for radios and are skipped. To
        // account for FALSE and empty string values in the #return_value, we will
        // consider any #value that evaluates to empty to be the same as any
        // #return_value that evaluates to empty.
        if (isset($element['#return_value']) && $element['#value'] !== FALSE && !is_array($element['#value']) && (empty($element['#value']) && empty($element['#return_value']) || (string) $element['#value'] === (string) $element['#return_value'])) {
            $element['#attributes']['checked'] = 'checked';
        }
        static::setAttributes($element, [
            'form-radio',
        ]);
        return $element;
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
FormElementBase::processAutocomplete public static function Adds autocomplete functionality to elements. 1
FormElementBase::processPattern public static function #process callback for #pattern form element property. 1
FormElementBase::validatePattern public static function #element_validate callback for #pattern form element property. 1
FormElementBase::valueCallback public static function Determines how user input is mapped to an element's #value property. Overrides FormElementInterface::valueCallback 17
PluginInspectionInterface::getPluginDefinition public function Gets the definition of the plugin implementation. 6
PluginInspectionInterface::getPluginId public function Gets the plugin_id of the plugin instance. 2
Radio::getInfo public function Returns the element properties for this element. Overrides ElementInterface::getInfo
Radio::preRenderRadio public static function Prepares a #type 'radio' render element for input.html.twig.
RenderElementBase::preRenderAjaxForm public static function Adds Ajax information about an element to communicate with JavaScript. 2
RenderElementBase::preRenderGroup public static function Adds members of this group as actual elements for rendering. 2
RenderElementBase::processAjaxForm public static function Form element processing handler for the #ajax form property. 3
RenderElementBase::processGroup public static function Arranges elements into groups. 2
RenderElementBase::setAttributes public static function Sets a form element's class attribute. Overrides ElementInterface::setAttributes 2

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.