Ergebnis 1 bis 14 von 14

Thema: ist es möglich mit processFormData die Weiterleitungsseite zu beeinflussen?

  1. #1
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.780
    User beschenken
    Wunschliste

    Standard ist es möglich mit processFormData die Weiterleitungsseite zu beeinflussen?

    Moin,
    ist es möglich mit dem Hook processFormData die Weiterleitungsseite zu beeinflussen oder hat man nur Zugriff auf die eigentlichen Formularwerte?

  2. #2
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.615
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo zonky,

    guck Dir mal meine Erweiterung linksplitter an:
    https://contao.org/de/extension-list...ksplitter.html

  3. #3
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.780
    User beschenken
    Wunschliste

    Standard

    Moin,

    verstehe ich die Erweiterung so richtig, dass ich von einem Formular auf eine "Gabelungsseite" leite per normaler Formular-Weiterleitung und dort das Modul Linksplitter einbaue...

    also
    Code:
    Formular -> 
                   Weiterleitungsseite mit Linksplitter
                                                                -> Seite 1 oder
                                                                -> Seite 2 oder
                                                                -> Seite 3

  4. #4
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.615
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Korrekt.
    Die Zielseite enthält das Modul und verteilt anhand von einer GET- oder POST-Variablen weiter. Sollte sich keine passende Weiterleitung in der Liste finden, bleibt es auf der Seite.

  5. #5
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.780
    User beschenken
    Wunschliste

    Standard

    hmmm... mein "Ziel" wäre es, bei der ersten Formularverarbeitung den Wert für "jumpTo" während der "Laufzeit" zu verändern...

    Ich sehe aktuell aber keinen Weg den Wert zu beeinflussen :-(

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

    Standard

    Ich glaube du könntest einfach den Wert in der Datenbank für das 'jumpTo' field für das jeweilige Formular verändern in deinem Hook. Soweit ich das sehe wird am Ende der processFormData function dieser Wert immer frisch geholt:
    PHP-Code:
            // Check whether there is a jumpTo page
            
    if (($objJumpTo $this->objModel->getRelated('jumpTo')) !== null)
            {
                
    $this->jumpToOrReload($objJumpTo->row());
            } 

  7. #7
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.780
    User beschenken
    Wunschliste

    Standard

    @Spooky

    per Hook das Datenbankfeld ändern weil es später ausgelesen wird, halte ich etwas "von Hinten durch die Brust ins Auge..."


    schöner wäre so was wie

    PHP-Code:
    // /system/modules/core/form/Form.php


            // Check whether there is a jumpTo page
            
    if ($arrSet['jumpto'] !== null && is_int($arrSet['jumpto']))
            {
                
    $this->jumpToOrReload($arrSet['jumpto']);
            }
            else if ((
    $objJumpTo $this->objModel->getRelated('jumpTo')) !== null)
            {
                
    $this->jumpToOrReload($objJumpTo->row());
            } 
    ... nochmal geändert
    Geändert von zonky (09.12.2013 um 12:20 Uhr)

  8. #8
    Contao-Nutzer
    Registriert seit
    27.08.2013.
    Beiträge
    38

    Standard

    Ich schreibe gerade an einem Frontendediting Modul, welches die Formulare zur Dateneingabe nutzt (link). Dabei müssen wir die Eingabeformulare innerhalb des processFormData-Hooks auf eine ursprüngliche Seite (auf welcher der Datensatz ausgegeben wird) umleiten.

    Habe mir deswegen nochmal angesehen wie man das erreichen könnte.
    Das Grundproblem ist, dass das Formular in der \Form Klasse in den Zeilen 512 - 516 auf das Model und getRelated("jumpTo") zugreift um auf diese Seite umzuleiten.

    PHP-Code:
    // Check whether there is a jumpTo page
    if (($objJumpTo $this->objModel->getRelated('jumpTo')) !== null)
    {
        
    $this->jumpToOrReload($objJumpTo->row());

    Die Methode \Model->getRelated() greift auf ein protected Array zu welches wir zur Laufzeit nicht ändern können um das Formular umzuleiten (Es gibt keinen Setter).

    Ich bin bisher zu folgenden (nicht so schönen Lösungen) gekommen:

    1.) Man leitet einfach im Hook selber hart um (Redirect).
    Das ist offensichtlich keine gute Idee, da sie das Script an dieser Stelle beendet und alle Dinge die normalerweise geschehen nachdem unser Hook durchlaufen worden ist, nicht mehr stattfinden.

    2.) Man überschreibt \Form indem man es in der Autoload.php mit einem eigenen \Form das von \contao\Form erbt ersetzt. Ist das Formular erstmal überschrieben hat man freie Hand und kann die Umleitung in der Formularklasse so modelieren wie man möchte. Leider wird man damit inkompatibel zu anderen Erweiterungen die einen ähnlichen Weg wählen.

    3.) Man überschreibt Contao\FormModel in der Autoload und schafft sich einen entsprechenden Getter.
    Dies löst zwar kurfristig das Problem hat aber ähnliche Folgen wie 2.).

    4.) Man manipuliert das Formular per Reflection setzt das attribute $arrRelated auf public und liest es einfach aus.
    Das ist zwar schon besser (kompatibler) als das Vorgehen in den ersten drei Alternativen, aber dafür ein ziemlich dreckiger Hack.

    5.) Man stellt dem Contao-Core Team ein Ticket samt Fork und Patch zur Verfügung und wartet bis Contao gelernt hat die Weiterleitungsseite dynamisch zu setzen. Dies ist zwar sicher die sauberste, aber auch langsamste (und deswegen nur langfristig verwendbare) Methode.

    Habt ihr noch andere Ideen wie man dieses Problem angehen kann (Vielleicht ohne gleich den Core zu hacken )?
    Das würde nämlich einige Dinge erleichtern :-).
    Geändert von barteljan (29.11.2014 um 12:22 Uhr)

  9. #9
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.780
    User beschenken
    Wunschliste

    Standard

    an dem Ticket

    https://github.com/contao/core/issues/6539

    hat sich nix geändert - offensichtlich ist das auch in keine Version bisher eingeflossen :-((

    PS: würde zu Punkt 5 passen

  10. #10
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    6. Man benutzt die Extension "Haste" von Terminal24 für Formulare in eigenen Modulen?

    Gesendet von meinem Xperia Arc S mit Tapatalk

  11. #11
    Contao-Nutzer
    Registriert seit
    27.08.2013.
    Beiträge
    38

    Standard

    Klingt gut wo finde ich die (Das ER findet unter haste nix)?

    Edit: Ahh ... gefunden man muss nur englisch suchen ...
    Geändert von barteljan (29.11.2014 um 22:27 Uhr)

  12. #12
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Hmm lustig. Google findest das auf Github und den englischen ER: https://contao.org/en/extension-list/view/haste.en.html

    Scheint auch mittlerweile zu codefog gewandert zu sein.

    Gesendet von meinem Xperia Arc S mit Tapatalk

  13. #13
    Contao-Nutzer
    Registriert seit
    27.08.2013.
    Beiträge
    38

    Standard

    Super vielen Dank für den Tipp, das scheint tatsächlich einiges zu erleichtern :-)

  14. #14
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.780
    User beschenken
    Wunschliste

    Standard

    ansonsten schreib mal Kamil (codefrog) - in english please - antwortet sicher zügig...

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
  •