From fe667e7fe1cf7eb45353a351514a60940c5ae563 Mon Sep 17 00:00:00 2001 From: Yoan-Alexander Grigorov Date: Fri, 26 Sep 2025 12:09:34 +0200 Subject: [PATCH 1/2] :beetle: Fixed disappearing numeric field element keys --- src/Form/Form.php | 2 +- src/Form/FormElementCollection.php | 12 +++++------- tests/Form/FormTest.php | 12 ++++++------ 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/Form/Form.php b/src/Form/Form.php index 240e197..7fbf0e5 100644 --- a/src/Form/Form.php +++ b/src/Form/Form.php @@ -42,7 +42,7 @@ public function validate(array $values): void fn ($error) => "[{$error['property']}] {$error['message']}", $validator->getErrors(), ); - throw new FormValidationException("Form validation failed", $validator->getErrors()); + throw new FormValidationException("Form validation failed", $errorMessages); } } } diff --git a/src/Form/FormElementCollection.php b/src/Form/FormElementCollection.php index 15ade56..9cfa5a6 100644 --- a/src/Form/FormElementCollection.php +++ b/src/Form/FormElementCollection.php @@ -46,13 +46,11 @@ public function getRequired(): array public function getValues(): array { return array_filter( - Arr::collapse( - Arr::map( - (array) $this, - static fn (FormElement $formElement) => [ - $formElement->name => $formElement->value(), - ], - ), + Arr::mapWithKeys( + (array) $this, + static fn (FormElement $formElement) => [ + $formElement->name => $formElement->value(), + ], ), ); } diff --git a/tests/Form/FormTest.php b/tests/Form/FormTest.php index 0a68712..44b58d9 100644 --- a/tests/Form/FormTest.php +++ b/tests/Form/FormTest.php @@ -204,12 +204,12 @@ public function test_it_converts_to_json_schema(): void public function test_it_gets_values(): void { $text = new Text( - name: 'name_1', + name: '1001', label: 'Label 1', value: 'Initial text', ); $checkbox = new Checkbox( - name: 'name_2', + name: '1002', label: 'Label 2', value: true, ); @@ -238,11 +238,11 @@ public function test_it_gets_values(): void ); assertEquals([ - 'name_1' => 'Initial text', - 'name_2' => true, + 1001 => 'Initial text', + 1002 => true, 'name_4' => [ - 'name_1' => 'Initial text', - 'name_2' => true, + 1001 => 'Initial text', + 1002 => true, ], ], $form->getValues()); } From eebced468727a7d91e80b7b31df59451d45cd7c8 Mon Sep 17 00:00:00 2001 From: Yoan-Alexander Grigorov Date: Fri, 26 Sep 2025 12:17:00 +0200 Subject: [PATCH 2/2] :fire: Simplified form validation - use generic messages --- src/Form/Form.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/Form/Form.php b/src/Form/Form.php index 7fbf0e5..c944e45 100644 --- a/src/Form/Form.php +++ b/src/Form/Form.php @@ -38,11 +38,7 @@ public function validate(array $values): void $validator = new Validator; $validator->validate($values, $this->toJsonSchema(), Constraint::CHECK_MODE_TYPE_CAST); if (!$validator->isValid()) { - $errorMessages = array_map( - fn ($error) => "[{$error['property']}] {$error['message']}", - $validator->getErrors(), - ); - throw new FormValidationException("Form validation failed", $errorMessages); + throw new FormValidationException("Form validation failed", $validator->getErrors()); } } }