Hi, der Issue ist etwas schwieriger zu erklären, daher einmal auf deutsch. Hoffe das ist in Ordnung.
Es geht mehr oder weniger um diese isset() Abfrage hier im PreProcessor/LoadDefaultValues.
Die Ausgangssituation ist:
Ein Formular, wo mit Hilfe von DefaultValue ein Feld mit 0 vordefiniert wird:
preProcessors {
1.class = PreProcessor\LoadDefaultValues
1.config {
1 {
abc.defaultValue = 0
}
}
}
Jetzt wurde im Formular eine TypoScript Bedingung gesetzt, das wenn die Seite mit dem Formular aufgerufen wird und ein URL Parameter vorhanden ist, dann soll das Feld 1 enthalten
[traverse(request.getQueryParams(), 'parameteranderurl') == 1]
2.class = PreProcessor\LoadDefaultValues
2.config {
1 {
abc.defaultValue = 1
}
}
[global]
Wenn wir nun im "PreProcessor/LoadDefaultValues" -> setDefaultValues sind, hat sich folgendes geändert:
Beim Aufruf der Funktion werden die Werte mit anderen ausgangswerten Übergeben:
Ursprünglich kam der Wert mit einem null wert an
array:1 [▼
"abc" => null
]
Jetzt kommt der Wert mit einem leeren String an
In der Funktion setDefaultValues wird das Array nun durchlaufen und wir kommen zu oben erwähnten Zeile 91
elseif (!isset($currentLevelGP[$fieldName])
Ursprünglich war der wert von abc NULL, somit war die isset(...)* Abfrage selbst false und durch die Negation true, jetzt wird aber gegen einen leeren String geprüft, somit ist isset(...) true und durch die Negation false
Und das Feld "abc" bleibt in dem Fall leer
isset — Prüft, ob eine Variable deklariert ist und sich von null unterscheidet