From 863fa6f5b5b78660a16ec7889e5f308869b3a611 Mon Sep 17 00:00:00 2001 From: feuerwagen Date: Tue, 4 Jun 2024 13:26:58 +0200 Subject: [PATCH 1/3] Fix error with empty object property --- src/Drupal/FormGeneratorDrupal.php | 2 +- src/JsonSchemaFormValidator.php | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Drupal/FormGeneratorDrupal.php b/src/Drupal/FormGeneratorDrupal.php index b4154fa..39f67be 100644 --- a/src/Drupal/FormGeneratorDrupal.php +++ b/src/Drupal/FormGeneratorDrupal.php @@ -49,7 +49,7 @@ public function doTransform($data, Context $context = NULL) { */ public function getInputValidator() { // Validate the JSON-Schema input. - return new JsonSchemaFormValidator(new Validator()); + return new JsonSchemaFormValidator(new Validator(), Constraint::CHECK_MODE_TYPE_CAST); } /** diff --git a/src/JsonSchemaFormValidator.php b/src/JsonSchemaFormValidator.php index b995c6e..4d9491c 100644 --- a/src/JsonSchemaFormValidator.php +++ b/src/JsonSchemaFormValidator.php @@ -23,8 +23,7 @@ public function __construct(Validator $validator, $mode = NULL) { */ public function isValid($data) { return parent::isValid($data) - && $data->type === 'object' - && (bool) $data->properties; + && $data->type === 'object'; } } From 576060f01a678eb35c4ecd18f7a322bc6f6b70c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Wed, 5 Jun 2024 12:34:55 +0200 Subject: [PATCH 2/3] Fix (?) validator --- src/Drupal/FormValidatorDrupal.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Drupal/FormValidatorDrupal.php b/src/Drupal/FormValidatorDrupal.php index 7760e3d..30c2cc1 100644 --- a/src/Drupal/FormValidatorDrupal.php +++ b/src/Drupal/FormValidatorDrupal.php @@ -7,6 +7,7 @@ use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Render\Element; use Drupal\Core\StringTranslation\TranslatableMarkup; +use JsonSchema\Constraints\Constraint; use JsonSchema\Validator; use SchemaForms\ArrayToStdClass; use SchemaForms\RecursiveTypeCaster; @@ -38,7 +39,10 @@ public static function validateWithSchema(array &$element, FormStateInterface $f } $validator = new Validator(); // Validate the massaged data against the schema. - $num_errors = $validator->validate($data, $schema); + if ($data === null) { + $data = []; + } + $num_errors = $validator->validate($data, $schema, Constraint::CHECK_MODE_TYPE_CAST); if ($num_errors) { // Build the mappings of paths to form paths. $mappings = static::buildMappingsElementPaths($element, $element['#array_parents']); From c62ce58f97d82253866c7be676baedbdce8f8380 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Wed, 5 Jun 2024 12:37:33 +0200 Subject: [PATCH 3/3] Fix indentation. --- src/Drupal/FormValidatorDrupal.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Drupal/FormValidatorDrupal.php b/src/Drupal/FormValidatorDrupal.php index 30c2cc1..11e7d4c 100644 --- a/src/Drupal/FormValidatorDrupal.php +++ b/src/Drupal/FormValidatorDrupal.php @@ -39,10 +39,10 @@ public static function validateWithSchema(array &$element, FormStateInterface $f } $validator = new Validator(); // Validate the massaged data against the schema. - if ($data === null) { - $data = []; - } - $num_errors = $validator->validate($data, $schema, Constraint::CHECK_MODE_TYPE_CAST); + if ($data === null) { + $data = []; + } + $num_errors = $validator->validate($data, $schema, Constraint::CHECK_MODE_TYPE_CAST); if ($num_errors) { // Build the mappings of paths to form paths. $mappings = static::buildMappingsElementPaths($element, $element['#array_parents']);