fix(admin): accept multi-value 发布类型 on header-nav save
header_newposts_types is multi-select but PHP schema used type=select, so validate() rejected arrays with 422. Use checkbox and allow select+multiple arrays in SchemaProvider.
This commit is contained in:
1 parent
53836ac6b8
commit
ab3d361d46
3 files changed
+16
-3
No files matched your search
@@ -181,13 +181,26 @@ class SchemaProvider {
|
||||
|
||||
if (in_array($type, ['select', 'radio'], true) && !empty($field['options'])) {
|
||||
$valid_values = array_column($field['options'], 'value');
|
||||
if (!in_array($value, $valid_values, true)) {
|
||||
// Multi-select: accept array values when schema.multiple is set
|
||||
// (legacy / SPA may still use type=select multiple).
|
||||
if (!empty($field['multiple']) && is_array($value)) {
|
||||
foreach ($value as $item) {
|
||||
if (!in_array($item, $valid_values, true)) {
|
||||
$errors[] = sprintf('%s has an invalid value', $field['label'] ?? $key);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} elseif (!in_array($value, $valid_values, true)) {
|
||||
$errors[] = sprintf('%s has an invalid value', $field['label'] ?? $key);
|
||||
}
|
||||
}
|
||||
|
||||
if ($type === 'checkbox' && !empty($field['options'])) {
|
||||
$valid_values = array_column($field['options'], 'value');
|
||||
if (!is_array($value)) {
|
||||
$errors[] = sprintf('%s must be an array', $field['label'] ?? $key);
|
||||
continue;
|
||||
}
|
||||
foreach ((array) $value as $item) {
|
||||
if (!in_array($item, $valid_values, true)) {
|
||||
$errors[] = sprintf('%s has an invalid value', $field['label'] ?? $key);
|
||||
|
||||
Reference in new issue
Block a user