From ce7d3c3b1da399dd2e5df6146ed795d6fc029cad Mon Sep 17 00:00:00 2001 From: Sebastiaan Stok Date: Mon, 16 Sep 2024 15:47:08 +0200 Subject: [PATCH] Inform for which field the configuration errored --- lib/Core/Field/GenericResolvedFieldType.php | 7 ++++++- lib/Core/GenericSearchFactory.php | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/Core/Field/GenericResolvedFieldType.php b/lib/Core/Field/GenericResolvedFieldType.php index 044076bb..1edf5c1b 100644 --- a/lib/Core/Field/GenericResolvedFieldType.php +++ b/lib/Core/Field/GenericResolvedFieldType.php @@ -18,6 +18,7 @@ use Rollerworks\Component\Search\Value\Compare; use Rollerworks\Component\Search\Value\PatternMatch; use Rollerworks\Component\Search\Value\Range; +use Symfony\Component\OptionsResolver\Exception\ExceptionInterface; use Symfony\Component\OptionsResolver\OptionsResolver; /** @@ -70,7 +71,11 @@ public function getTypeExtensions(): array public function createField(string $name, array $options = []): FieldConfig { - $options = $this->getOptionsResolver()->resolve($options); + try { + $options = $this->getOptionsResolver()->resolve($options); + } catch (ExceptionInterface $e) { + throw new $e(\sprintf('An error has occurred resolving the options of the field "%s" with type "%s": ', $name, get_debug_type($this->getInnerType())) . $e->getMessage(), $e->getCode(), $e); + } return $this->newField($name, $options); } diff --git a/lib/Core/GenericSearchFactory.php b/lib/Core/GenericSearchFactory.php index a9e03159..79617718 100644 --- a/lib/Core/GenericSearchFactory.php +++ b/lib/Core/GenericSearchFactory.php @@ -16,6 +16,7 @@ use Rollerworks\Component\Search\Field\FieldConfig; use Rollerworks\Component\Search\Field\OrderField; use Rollerworks\Component\Search\Field\TypeRegistry; +use Symfony\Component\OptionsResolver\Exception\ExceptionInterface; /** * @author Sebastiaan Stok @@ -64,7 +65,12 @@ public function createField(string $name, string $type, array $options = []): Fi private function createOptionsForOrderField(string $name, array $options): array { $type = $this->registry->getType($options['type']); - $options['type_options'] = $type->getOptionsResolver()->resolve($options['type_options'] ?? []); + + try { + $options['type_options'] = $type->getOptionsResolver()->resolve($options['type_options'] ?? []); + } catch (ExceptionInterface $e) { + throw new $e(\sprintf('An error has occurred resolving the type-options of the order-field "%s"": ', $name) . $e->getMessage(), $e->getCode(), $e); + } return $options; }