@@ -225,6 +225,7 @@ public function loadAll(): void
225
225
}
226
226
}
227
227
228
+ $ knownParameters = $ this ->normalizeNullsBeforeResolve ($ knownParameters , $ settingsBuilder );
228
229
$ parameters = $ settingsBuilder ->resolve ($ knownParameters );
229
230
$ settings ->setParameters ($ parameters );
230
231
$ schemaList [$ name ] = $ settings ;
@@ -268,7 +269,7 @@ public function load(string $schemaAlias, ?string $namespace = null, bool $ignor
268
269
$ parameters [$ parameter ] = $ transformer ->reverseTransform ($ parameters [$ parameter ]);
269
270
}
270
271
}
271
-
272
+ $ parameters = $ this -> normalizeNullsBeforeResolve ( $ parameters , $ settingsBuilder );
272
273
$ parameters = $ settingsBuilder ->resolve ($ parameters );
273
274
$ settings ->setParameters ($ parameters );
274
275
@@ -284,7 +285,9 @@ public function update(SettingsInterface $settings): void
284
285
285
286
$ settingsBuilder = new SettingsBuilder ();
286
287
$ schema ->buildSettings ($ settingsBuilder );
287
- $ parameters = $ settingsBuilder ->resolve ($ settings ->getParameters ());
288
+ $ raw = $ settings ->getParameters ();
289
+ $ raw = $ this ->normalizeNullsBeforeResolve ($ raw , $ settingsBuilder );
290
+ $ parameters = $ settingsBuilder ->resolve ($ raw );
288
291
// Transform value. Example array to string using transformer. Example:
289
292
// 1. Setting "tool_visible_by_default_at_creation" it's a multiple select
290
293
// 2. Is defined as an array in class DocumentSettingsSchema
@@ -346,7 +349,9 @@ public function save(SettingsInterface $settings): void
346
349
347
350
$ settingsBuilder = new SettingsBuilder ();
348
351
$ schema ->buildSettings ($ settingsBuilder );
349
- $ parameters = $ settingsBuilder ->resolve ($ settings ->getParameters ());
352
+ $ raw = $ settings ->getParameters ();
353
+ $ raw = $ this ->normalizeNullsBeforeResolve ($ raw , $ settingsBuilder );
354
+ $ parameters = $ settingsBuilder ->resolve ($ raw );
350
355
// Transform value. Example array to string using transformer. Example:
351
356
// 1. Setting "tool_visible_by_default_at_creation" it's a multiple select
352
357
// 2. Is defined as an array in class DocumentSettingsSchema
@@ -1017,4 +1022,14 @@ private function transformToString($value): string
1017
1022
1018
1023
return (string ) $ value ;
1019
1024
}
1025
+
1026
+ private function normalizeNullsBeforeResolve (array $ parameters , SettingsBuilder $ settingsBuilder ): array
1027
+ {
1028
+ foreach ($ parameters as $ k => $ v ) {
1029
+ if ($ v === null && $ settingsBuilder ->isDefined ($ k )) {
1030
+ unset($ parameters [$ k ]);
1031
+ }
1032
+ }
1033
+ return $ parameters ;
1034
+ }
1020
1035
}
0 commit comments