Hallo zusammen und frohes neues Jahr alle miteinander!
Vorwort
Ich hänge zurzeit an einem Problem und stehe irgendwie auf dem Schlauch. Möglicherweise kann jemand von euch mir weiter helfen.
Ich arbeite zurzeit an einer Erweiterung, über die ich Subformulare einbinden kann. Dies brauche ich für eine Seite, in der man Eingaben für seine Steuererklärung machen können soll, und das Formular muss hier ziemlich dynamisch aufgebaut sein. Das Subformular wird in diesem Falle über einen eigenen Input-Typ realisiert, der dann die Möglichkeit zur Auswahl eines anderen Formulars bietet. Die Auswahl und Ausgabe funktioniert soweit auch schon wie gewünscht.
subformular.PNG
Nun soll das Formular nur dann ausgegeben werden, wenn das Input-Feld "zeitweise_ausser_landes" leer ist. Dazu wird beim generieren des Formulars automatisch ein JavaScript angehangen, das per OnClick auf das Input-Feld ein Submit auf das Formular durchführt.
Damit dies nicht zu Fehlermeldungen führt, entferne ich die Errors über den Hook validateFormField.
Die Funktion wird zu Testzwecken momentan immer angewendet und muss im späteren Verlauf noch durch eine IF-Abfrage ergänzt werden.PHP-Code:
public function validateFormField(Widget $objWidget, $intId)
{
$objWidget->arrErrors = Array();
return $objWidget;
}
Das Problem
Nun zum eigentlichen Problem. Da man sich durch mehrere Formulare hangeln soll, wurde als Zielseite des Formulars, das auf Seite 1 eingebunden wurde beispielsweise die Seite 2 eingestellt.
Auf diese soll jedoch nicht weitergeleitet werden, wenn das Formular per JavaScript abgeschickt wurde. Leider habe ich noch keine Möglichkeit gefunden, die Zielseite während der Laufzeit per Hook zu überschreiben. In folgendem Github-Issue wurde der Hook "processFormData" zum Überschreiben des "jumpTo"-Attributs genannt. https://github.com/contao/core/issues/6539
Leider habe ich es noch nicht geschafft, das "jumpTo"-Attribut zu überschreiben. Folgender Hook hat leider nichts gebracht.
"3" ist in diesem Falle Seite 1, die die Weiterleitung auf Seite 2 überschreiben soll. Leider wird aber immer noch statt auf die Seite mit der ID "3" auf die Seite mit der ID "5" weiter geleitet.PHP-Code:
public function processFormData($arrPost, &$arrForm, $arrFiles)
{
$arrForm['jumpTo'] = 3;
}
Oder gibt es hier noch andere Mittel und Wege die Weiterleitung, die im Formular eingestellt wurde zu unterbinden?
Liebe Grüße,
Dennis
Lesezeichen