fix: settings numeric error

This commit is contained in:
2025-12-04 14:46:30 +03:00
parent ad54b14c68
commit 44d2af3b30
3 changed files with 24 additions and 9 deletions

View File

@@ -100,3 +100,4 @@
- Избыточные технические описания
- Маркетинговые лозунги и призывы

View File

@@ -2,7 +2,11 @@
<SettingsItem :label="label">
<template #default>
<select class="form-control" v-model="model">
<option v-for="(value, key) in items" :value="key" :key="key">
<option
v-for="(value, key) in items"
:value="normalizeOptionValue(key)"
:key="key"
>
{{ value }}
</option>
</select>
@@ -27,6 +31,16 @@ const props = defineProps({
default: '',
},
});
// Преобразуем числовые ключи обратно в Number, чтобы v-model не получал строки
const normalizeOptionValue = (key) => {
if (typeof key === 'number') {
return key;
}
const parsed = Number(key);
return Number.isNaN(parsed) ? key : parsed;
};
</script>
<style scoped>

View File

@@ -60,7 +60,7 @@ class SettingsSerializerService
throw new InvalidArgumentException('app.language_id is required');
}
if (! is_int($data['language_id'])) {
if (! is_numeric($data['language_id'])) {
throw new InvalidArgumentException('app.language_id must be an integer');
}
@@ -133,7 +133,7 @@ class SettingsSerializerService
throw new InvalidArgumentException('store.oc_store_id is required');
}
if (! is_int($data['oc_store_id'])) {
if (! is_numeric($data['oc_store_id'])) {
throw new InvalidArgumentException('store.oc_store_id must be an integer');
}
@@ -153,7 +153,7 @@ class SettingsSerializerService
throw new InvalidArgumentException('orders.oc_customer_group_id is required');
}
if (! is_int($data['oc_customer_group_id'])) {
if (! is_numeric($data['oc_customer_group_id'])) {
throw new InvalidArgumentException('orders.oc_customer_group_id must be an integer');
}
@@ -204,7 +204,7 @@ class SettingsSerializerService
throw new InvalidArgumentException('app.language_id is required');
}
if (! is_int($data['language_id'])) {
if (! is_numeric($data['language_id'])) {
throw new InvalidArgumentException('app.language_id must be an integer');
}
@@ -301,7 +301,7 @@ class SettingsSerializerService
throw new InvalidArgumentException('store.oc_store_id is required');
}
if (! is_int($data['oc_store_id'])) {
if (! is_numeric($data['oc_store_id'])) {
throw new InvalidArgumentException('store.oc_store_id must be an integer');
}
@@ -313,7 +313,7 @@ class SettingsSerializerService
private function validateOrders(array $data): void
{
if (isset($data['order_default_status_id'])) {
if (! is_int($data['order_default_status_id'])) {
if (! is_numeric($data['order_default_status_id'])) {
throw new InvalidArgumentException('orders.order_default_status_id must be an integer');
}
if ($data['order_default_status_id'] <= 0) {
@@ -325,7 +325,7 @@ class SettingsSerializerService
throw new InvalidArgumentException('orders.oc_customer_group_id is required');
}
if (! is_int($data['oc_customer_group_id'])) {
if (! is_numeric($data['oc_customer_group_id'])) {
throw new InvalidArgumentException('orders.oc_customer_group_id must be an integer');
}
@@ -395,7 +395,7 @@ class SettingsSerializerService
$data['port'] = (int) $data['port'];
}
if (! is_int($data['port'])) {
if (! is_numeric($data['port'])) {
throw new InvalidArgumentException('database.port must be an integer');
}
if ($data['port'] <= 0 || $data['port'] > 65535) {