framework/widgets/ActiveField.php
public function radio($options = [], $enclosedByLabel = true)
    {
        if ($enclosedByLabel) {
            $this->parts['{input}'] = Html::activeRadio($this->model, $this->attribute, $options);
            $this->parts['{label}'] = '';
        } else {
            if (isset($options['label']) && !isset($this->parts['{label}'])) {
                $this->parts['{label}'] = $options['label'];
                if (!empty($options['labelOptions'])) {
                    $this->labelOptions = $options['labelOptions'];
                }
            }
            unset($options['labelOptions']);
            $options['label'] = null;
            $this->parts['{input}'] = Html::activeRadio($this->model, $this->attribute, $options);
        }

        if ($this->form->validationStateOn === ActiveForm::VALIDATION_STATE_ON_INPUT) {
            $this->addErrorClassIfNeeded($options);
        }

        $this->addAriaAttributes($options);
        $this->adjustLabelFor($options);

        return $this;
    }
public function radio($options = [], $enclosedByLabel = true)
    {
        if ($enclosedByLabel) {
            $this->parts['{input}'] = Html::activeRadio($this->model, $this->attribute, $options);
            $this->parts['{label}'] = '';
        } else {
            if (isset($options['label']) && !isset($this->parts['{label}'])) {
                $this->parts['{label}'] = $options['label'];
                if (!empty($options['labelOptions'])) {
                    $this->labelOptions = $options['labelOptions'];
                }
            }
            unset($options['labelOptions']);
            $options['label'] = null;
            $this->parts['{input}'] = Html::activeRadio($this->model, $this->attribute, $options);
        }

        if ($this->form->validationStateOn === ActiveForm::VALIDATION_STATE_ON_INPUT) {
            $this->addErrorClassIfNeeded($options);
        }

        $this->addAriaAttributes($options);
        $this->adjustLabelFor($options);

        return $this;
    }
Renders a radio button.
This method will generate the `checked` tag attribute according to the model attribute value.
@param array $options the tag options in terms of name-value pairs. The following options are specially handled:

- `uncheck`: string, the value associated with the uncheck state of the radio button. If not set,
it will take the default value `0`. This method will render a hidden input so that if the radio button
is not checked and is submitted, the value of this attribute will still be submitted to the server
via the hidden input. If you do not want any hidden input, you should explicitly set this option as `null`.
- `label`: string, a label displayed next to the radio button. It will NOT be HTML-encoded. Therefore you can pass
in HTML code such as an image tag. If this is coming from end users, you should [[Html::encode()|encode]] it to prevent XSS attacks.
When this option is specified, the radio button will be enclosed by a label tag. If you do not want any label, you should
explicitly set this option as `null`.
- `labelOptions`: array, the HTML attributes for the label tag. This is only used when the `label` option is specified.

The rest of the options will be rendered as the attributes of the resulting tag. The values will
be HTML-encoded using [[Html::encode()]]. If a value is `null`, the corresponding attribute will not be rendered.

If you set a custom `id` for the input element, you may need to adjust the [[$selectors]] accordingly.

@param bool $enclosedByLabel whether to enclose the radio within the label.
If `true`, the method will still use [[template]] to layout the radio button and the error message
except that the radio is enclosed by the label tag.
@return $this the field object itself.