fix: settings numeric error
This commit is contained in:
@@ -100,3 +100,4 @@
|
||||
- Избыточные технические описания
|
||||
- Маркетинговые лозунги и призывы
|
||||
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user