Compare commits

..

3 Commits

Author SHA1 Message Date
7cb6fe908b some fix 2024-12-27 12:26:39 +03:00
55624f9b67 select builder prompt add 2024-12-26 12:40:39 +03:00
3dd054b298 fix create option trait 2024-12-25 12:44:14 +03:00
2 changed files with 41 additions and 9 deletions

View File

@ -7,12 +7,20 @@ use itguild\forms\inputs\Select;
class SelectBuilder
{
public static function build(string $name, array $params = [])
public static function build(string $name, array $params = []): Select
{
$value = $params['value'] ?? null;
unset($params['value']);
$options = $params['options'] ?? [];
if (isset($params['prompt'])) {
$options['prompt'] = $params['prompt'];
foreach ($params['options'] as $key => $val) {
$options[$key] = $val;
}
unset($params['prompt']);
} else {
$options = $params['options'] ?? [];
}
unset($params['options']);
return new Select(name: $name, options: $options, value: $value, paramsArray: $params);

View File

@ -2,6 +2,8 @@
namespace itguild\forms\traits;
use itguild\forms\debug\Debug;
trait CreateOption
{
/**
@ -12,15 +14,37 @@ trait CreateOption
public function createOption(array $options, $value = null): string
{
$optionsString = "";
if (is_array($value)) {
foreach ($options as $val => $title) {
$selected = in_array($title, $value) ? "selected" : "";
$optionsString .= "<option $selected value='$val'>$title</option>";
if ($value) {
if (isset($options['prompt'])) {
$prompt = $options['prompt'];
$optionsString .= "<option value='''>$prompt</option>";
}
if (is_array($value)) {
foreach ($options as $val => $title) {
if ($val === 'prompt') continue;
$selected = in_array($title, $value) ? "selected" : "";
$optionsString .= "<option $selected value='$val'>$title</option>";
}
} else {
foreach ($options as $val => $title) {
if ($val === 'prompt') continue;
if (is_numeric($value)) {
$selected = (int)$value === $val ? "selected" : "";
} else {
$selected = $value === $val ? "selected" : "";
}
$optionsString .= "<option $selected value='$val'>$title</option>";
}
}
} else {
if (isset($options['prompt'])) {
$prompt = $options['prompt'];
$optionsString .= "<option value='' selected='selected'>$prompt</option>";
}
foreach ($options as $val => $title) {
$selected = (int)$value === $val ? "selected" : "";
$optionsString .= "<option $selected value='$val'>$title</option>";
if ($val === 'prompt') continue;
$optionsString .= "<option value='$val'>$title</option>";
}
}