radio_box

    public function radio_box()
    {
        return _class('html')->radio_box('input_name', ['k1' => 'key1', 'k2' => 'key2']);
    }
    public function radio_box($name, $values = [], $selected = '', $horizontal = true, $type = 2, $add_str = '', $translate = 0)
    {
        $extra = [];
        if (is_array($name)) {
            $extra = $name;
            $name = ($extra['name'] ?? null);
        }
        $values = isset($extra['values']) ? ($extra['values'] ?? null) : (array) $values; // Required
        $translate = isset($extra['translate']) ? ($extra['translate'] ?? null) : $translate;
        if ($extra['no_translate'] ?? null) {
            $translate = 0;
        }
        $selected = isset($extra['selected']) ? ($extra['selected'] ?? null) : $selected;
        $type = isset($extra['type']) ? ($extra['type'] ?? null) : ($type !== null ? $type : 2);
        $horizontal = isset($extra['horizontal']) ? ($extra['horizontal'] ?? null) : $horizontal;
        $add_str = isset($extra['add_str']) ? ($extra['add_str'] ?? null) : $add_str;
        if ($extra['class_add'] ?? null) {
            $add_str .= ' class="' . trim(($extra['class'] ?? null) . ' ' . ($extra['class_add'] ?? null)) . '" ';
        }
        if ($extra['style'] ?? null) {
            $add_str .= ' style="' . ($extra['style'] ?? null) . '" ';
        }
        if ( ! $values) {
            return false;
        }
        $selected = (string) $selected;
        $this->_ids[__FUNCTION__] = ($this->_ids[__FUNCTION__] ?? 0) + 1;
        $id_prefix = __FUNCTION__ . '_' . $this->_ids[__FUNCTION__];
        ($extra['force_id'] ?? null) && $id_prefix = ($extra['force_id'] ?? null);
        $counter = 0;
        $body = [];
        if ($extra['outer_label'] ?? null) {
            $body[] = '<label class="outer-label">' . ($extra['outer_label'] ?? null) . '</label>';
        }
        $orig_extra = $extra;
        $use_stpl = isset($extra['use_stpl']) ? ($extra['use_stpl'] ?? null) : $this->BOXES_USE_STPL;
        foreach ((array) $values as $value => $val_name) {
            $label_extra_class = '';
            if (is_array($val_name)) {
                $extra = (array) $orig_extra + (array) ($val_name['extra'] ?? null);
                $label_extra_class = ($val_name['class'] ?? null);
                $val_name = ($val_name['html'] ?? null);
            }
            $is_selected = ((string) ($type == 1 ? $val_name : $value) == $selected);
            $id = $id_prefix . '_' . ++$counter;
            if ($use_stpl) {
                $body[] = tpl()->parse('system/common/radio_box_item', [
                    'name' => $name,
                    'value' => $value,
                    'selected' => $is_selected ? 'checked="checked"' : '',
                    'add_str' => $add_str,
                    'label' => $translate ? t($val_name) : $val_name,
                    'horizontal' => (int) ((bool) $horizontal),
                    'id' => $id,
                    'extra' => $extra,
                ]);
            } else {
                $label_extra = $extra['label_extra'] ?? null;
                if (isset($label_extra['class'])) {
                    $label_extra['class'] = ($label_extra_class ?: ($label_extra['class'] ?? null) ?: $this->CLASS_LABEL_RADIO) . ($horizontal ? ' ' . $this->CLASS_LABEL_RADIO_INLINE : '');
                }
                if ($extra['class_add_label_radio'] ?? null) {
                    $label_extra['class'] = ($label_extra['class'] ?? '') . ' ' . ($extra['class_add_label_radio'] ?? null);
                }
                if ($is_selected) {
                    $label_extra['class'] = ($label_extra['class'] ?? '') . ' ' . $this->CLASS_LABEL_RADIO_SELECTED;
                }
                $body[] =
                    '<label' . _attrs($label_extra, ['id', 'class', 'style']) . '>'
                    . '<input type="radio"' . $this->_bs5_check_input_attr($add_str) . ' name="' . $name . '" id="' . $id . '" value="' . $value . '"' . ($add_str ? ' ' . trim($add_str) : '') . ($is_selected ? ' checked="checked"' : '') . '>'
                    . '<span>' . t($val_name) . '</span>'
                    . '</label>' . PHP_EOL;
            }
        }
        return implode(PHP_EOL, $body);
    }