Ergebnis 1 bis 5 von 5

Thema: $arrForm['jumpTo'] über processFormData anpassen

  1. #1
    Contao-Nutzer Avatar von chatjack
    Registriert seit
    02.09.2012.
    Ort
    Essen
    Beiträge
    160

    Standard $arrForm['jumpTo'] über processFormData anpassen

    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.

    PHP-Code:
    public function validateFormField(Widget $objWidget$intId)
      {
        
    $objWidget->arrErrors = Array();
        return 
    $objWidget;
      } 
    Die Funktion wird zu Testzwecken momentan immer angewendet und muss im späteren Verlauf noch durch eine IF-Abfrage ergänzt werden.

    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.

    PHP-Code:
    public function processFormData($arrPost, &$arrForm$arrFiles)
      {
        
    $arrForm['jumpTo'] = 3;
      } 
    "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.

    Oder gibt es hier noch andere Mittel und Wege die Weiterleitung, die im Formular eingestellt wurde zu unterbinden?

    Liebe Grüße,
    Dennis
    Geändert von chatjack (02.01.2017 um 00:22 Uhr)

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.109
    Partner-ID
    10107

    Standard

    Der 5. Parameter des processFormData Hooks ist das Formular Objekt selbst: https://github.com/contao/core/blob/.../Form.php#L520
    PHP-Code:
    public function processFormData($arrSubmitted$arrData$arrFiles$arrLabels, \Form $objForm)
    {
        


        $objForm
    ->objModel->jumpTo ;

        


    (ungetestet)

  3. #3
    Contao-Nutzer Avatar von chatjack
    Registriert seit
    02.09.2012.
    Ort
    Essen
    Beiträge
    160

    Standard

    Besten Dank für den Hinweis. Werde es gleich mal testen. Wusste gar nicht, dass es hier noch weitere Parameter gibt. In der Dokumentation war nur von dreien die Rede.

    https://docs.contao.org/books/api/ex...sFormData.html

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.109
    Partner-ID
    10107

    Standard

    Hm, ja das müsste man mal aktualisieren, habe ich mir notiert

  5. #5
    Contao-Nutzer Avatar von chatjack
    Registriert seit
    02.09.2012.
    Ort
    Essen
    Beiträge
    160

    Standard

    "$objForm->objModel" gab leider "null" zurück. Über die Funktion "getModel()" hat es aber funktioniert.

    PHP-Code:
    public function processFormData($arrSubmitted$arrData$arrFiles$arrLabels, \Form $objForm)
    {
      
    $objModel $objForm->getModel();
      
    $objModel->jumpTo "3";

    Besten Dank!

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •