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

View File

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