From ee021fd7043c36d0b9c9731f69022b712aac7c6a Mon Sep 17 00:00:00 2001 From: Robert Date: Thu, 18 Dec 2025 22:00:13 -0500 Subject: [PATCH] select pick --- src/bootstrap/safer_io.php | 7 +++-- src/classes/form_builder/html_form.php | 41 +++++++++++++++++++++++--- 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/bootstrap/safer_io.php b/src/bootstrap/safer_io.php index 375dfc6..b1f257b 100644 --- a/src/bootstrap/safer_io.php +++ b/src/bootstrap/safer_io.php @@ -545,10 +545,11 @@ final class safer_io { if (isset($a->input_var)) { $user_text = $a->input_var; } elseif (isset($a->input_type) && $a->input_type instanceof \UnitEnum) { - if (empty($alt_name)) { - $user_text = self::get_input_by_type($input_field_name, $a->input_type); - } else { + if (isset($alt_name)) { $user_text = self::get_input_by_type($alt_name, $a->input_type); + $meta['alt'][$input_field_name] = [$alt_name, $user_text]; + } else { + $user_text = self::get_input_by_type($input_field_name, $a->input_type); } } else { $ret['name'] = $input_field_name; diff --git a/src/classes/form_builder/html_form.php b/src/classes/form_builder/html_form.php index 0c18499..42f3eaf 100644 --- a/src/classes/form_builder/html_form.php +++ b/src/classes/form_builder/html_form.php @@ -128,12 +128,35 @@ class html_form { $skip_output = []; foreach(SafeIO::esv($input['html']) as $html) { $key = $html['name'] ?? ""; - $html_output[$key] = $html['html']; + $alt = $html['meta']['alt'][$key] ?? null; + if (isset($alt)) { + $alt_name = $alt[0] ?? null; + $alt_value = $alt[1] ?? null; + if (isset($alt_name) && isset($alt_value)) { + $html_output[$alt_name] = $alt_value; + } else { + $html_output[$key] = $html['html']; + } + } else { + $html_output[$key] = $html['html']; + } + $headers[$key] = $html['meta']['field_desc'][$key] ?? ""; - $skipping = $html['meta']['skip_output'][$key] ?? null; - if ($skipping === true) { - $skip_output[$key] = true; + + if (isset($alt_name)) { + $skipping = $html['meta']['skip_output'][$key] ?? null; + if ($skipping === true) { + // skip both alt_name and key + $skip_output[$alt_name] = true; + $skip_output[$key] = true; + } + } else { + $skipping = $html['meta']['skip_output'][$key] ?? null; + if ($skipping === true) { + $skip_output[$key] = true; + } } + $show_labels = $html['meta']['show_label'][$key] ?? true; $form_type = $html['meta']['form_type'][$key] ?? FORM_TYPE::text; $form_data_list = $html['meta']['form_data_list'][$key] ?? []; @@ -360,12 +383,22 @@ class html_form { $html .= $this->build_options($children, $selected); $html .= ''; } else { + if ($value === "none") { + $option[] = 'disabled'; + $option[] = 'hidden'; + } + $option['value'] ??= $value; $label = $option['label'] ?? $option['value']; unset($option['label']); if (in_array($option['value'], $selected)) { $option[] = 'selected'; + } else { + if ($value === "none") { + $option[] = 'selected'; + $option['value'] = ""; // Force User to select... + } } $html .= 'html->attributes($option).'>'.$this->html->escape($label).'';