Ergebnis 1 bis 17 von 17

Thema: Formularelement mit Checkboxen und eigener Validierung

  1. #1
    Contao-Nutzer
    Registriert seit
    13.03.2012.
    Beiträge
    18

    Standard Formularelement mit Checkboxen und eigener Validierung

    Hallo,

    ich brauche für meine FE-User (also Mitglieder) eine Eigenschaft, die sie sich in Modul persönliche Daten aus mehreren Optionen per Checkbox wählen dürfen.
    Soweit kein Problem.

    Allerdings müssen immer genau zwei Boxen aktiviert sein, also quasi 2 aus 5 möglichen Optionen (quasi wie ein Lotto-Tippschein ;-) ). Wie gehe ich hier am sinnvollsten vor, um das Formularelement vor dem Absenden zu validieren?
    Mein Ansatz wäre jetzt, in \Contao\FormCheckBox die validate-Methode zu überschreiben, und das dann neu entstandene Element zu verwenden.
    Oder gibt es für diesen Zweck eine einfachere herangehensweise?

  2. #2
    Contao-Nutzer
    Registriert seit
    30.07.2015.
    Beiträge
    140

    Standard

    ich habe genau das Problem mit der Validierung. Wenn ich mit dem Hook validateFormField arbeite, ist die Checkbox ja bereits validiert. Wie kann ich denn die Validierung manipulieren?
    Wir sind Contao-Sponsor :-)

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

    Standard

    Was genau ist das Problem mit dem validateFormField Hook? Genau dafür ist der da.
    » sponsor me via GitHub or PayPal or Revolut

  4. #4
    Contao-Nutzer
    Registriert seit
    30.07.2015.
    Beiträge
    140

    Standard

    ich nutze das Checkbox-Menü im Formular und möchte gerne die values der Inputs manipulieren. Sobald diese von den options im Backend abweichen, wird logischerweise ein Fehler geworfen.

    Wenn ich jetzt den validateFormField Hook nutze, dann ist das Feld ja bereits als "Error" markiert und ich müsste ja sagen, dass mein Ergebnis passt. Geht das?

    Bisher habe ich immer nur den Fall gesehen, dass noch ein addError genutzt wurde...

    EDIT: Wie könnte ich denn alternativ mein Input der Checkbox mit einem weiteren Attribut erweitern und das zu den formData dazu packen?
    Wir sind Contao-Sponsor :-)

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

    Standard

    Zitat Zitat von paddibr Beitrag anzeigen
    ich nutze das Checkbox-Menü im Formular und möchte gerne die values der Inputs manipulieren.
    Die values der Inputs? Was genau möchtest du da manipulieren? Laut deiner initialen Beschreibung möchtest du ja nur prüfen, ob mindestens 2 Checkboxen ausgewählt wurden.
    » sponsor me via GitHub or PayPal or Revolut

  6. #6
    Contao-Nutzer
    Registriert seit
    30.07.2015.
    Beiträge
    140

    Standard

    Mein Checkbox-Menü hat 5 Optionen mit unterschiedlichen Werten. Zusätzlich zu jeder Checkbox habe ich das Template um einen Toggler erweitert. Ich möchte jetzt gerne das Ergebnis des Togglers zusätzlich (zu jeder Checkbox) übergeben. Mein Ansatz war halt, dass ich dem value-Attribut der Checkbox noch einen Zusatz gebe mit "Option"_"Zusatz". Es wird ja per default nur die option als value übergeben. Je nachdem welche als checked markiert sind.

    Das funktioniert aber natürlich bei der Validierung nicht. War das so verständlicher?
    Wir sind Contao-Sponsor :-)

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

    Standard

    Dann ist das aber nicht das gleiche Problem wie im initialen Post dieses Threads.

    Das heißt du möchtest die gültigen Werte für die Checkbox dynamisch ändern - nicht die von den Besucher*innen abgesendeten Daten, korrekt? Das kannst du über den compileFormField Hook machen.
    Geändert von Spooky (04.01.2023 um 11:54 Uhr)
    » sponsor me via GitHub or PayPal or Revolut

  8. #8
    Contao-Nutzer
    Registriert seit
    30.07.2015.
    Beiträge
    140

    Standard

    der compile Hook funktioniert hierfür nicht. Eigentlich möchte ich die abgesendeten Daten manipulieren, aber die sind ja beim validateFormField bereits validiert.

    Mir würde es schon reichen, wenn ich ein neues Attribut-Feld innerhalb der Checkboxen auch dann als Value(s) bei den formData habe und beim processFormDataHook abrufen kann.
    Geändert von paddibr (05.01.2023 um 09:13 Uhr)
    Wir sind Contao-Sponsor :-)

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

    Standard

    Ich verstehe dein Vorhaben immer noch nicht. Welche Rolle spielt es, ob das Checkbox Field schon validiert oder nicht? Beschreibe deinen use case nochmal genauer.
    » sponsor me via GitHub or PayPal or Revolut

  10. #10
    Contao-Nutzer
    Registriert seit
    30.07.2015.
    Beiträge
    140

    Standard

    sorry

    hier ein Auszug aus meinem Checkbox-Template für das Checkbox-Menü mit x Optionen:

    HTML-Code:
    <input type="checkbox" name="<?= $option['name'] ?>" id="opt_<?= $option['id'] ?>" class="checkbox" [B]value="<?= $option['value'] ?>"[/B] [B]meinAttribut=""[/B] <?= $option['attributes'] ?>>
    Ich würde entweder gerne den value-Wert direkt manipulieren. Dann habe ich aber beim validateFormField Hook den Wert gar nicht und gibt ja bereits das Widget mit einem Error.

    Oder aber ich nutze ein zweites Attribut "meinAttribut". Aber wie komme ich dann beim processFormDataHook innerhalb der arrData an die Daten?
    Geändert von paddibr (05.01.2023 um 11:32 Uhr)
    Wir sind Contao-Sponsor :-)

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

    Standard

    Zitat Zitat von paddibr Beitrag anzeigen
    Ich würde entweder gerne den value-Wert direkt manipulieren.
    Die zur Verfügung stehenden Options und deren Werte kannst du in einem compileFormField Hook manipulieren.
    » sponsor me via GitHub or PayPal or Revolut

  12. #12
    Contao-Nutzer
    Registriert seit
    30.07.2015.
    Beiträge
    140

    Standard

    ja, nur möchte ich diese Userbedingt ändern, das ist beim compile ja nicht möglich oder verstehe ich das falsch?

    Hast du eine Lösung für die 2. Variante? Wie kann ich denn die Daten eines weiteren Attributs durchschleusen?
    Wir sind Contao-Sponsor :-)

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

    Standard

    Erkläre nochmal genauer was du machen willst, denn ich verstehe es immer noch nicht .
    » sponsor me via GitHub or PayPal or Revolut

  14. #14
    Contao-Nutzer
    Registriert seit
    30.07.2015.
    Beiträge
    140

    Standard

    Innerhalb des Checkbox-Menüs im Formular ist eine Option ist jetzt z.B. "option1", die als Checkbox wählbar ist. D.h. ich bekomme, wenn die Checkbox geklickt wird, als Value ja auch option1 im Array zurück und kann den Wert ja im processFormDataHook verarbeiten.

    Ich möchte jetzt gerne über Javascript auf zusätzliche Eingaben des Benutzers reagieren und das Ergebnis mit übergeben. Dann hätte ich z.B. "option1_eingabeX" oder "option1_eingabeY". Aber sobald ich das mache, sagt mir die CheckboxForm logischerweise, die Eingaben sind falsch. Wenn ich das mit dem validateFormField abfange, dann ist dort ja bereits die Validierung von CheckboxForm durchgelaufen und ich sehe bereits den Error.

    Wie kann ich denn einen zusätzlichen Wert zu jeder angewählten Checkbox mit übergeben? Ich brauche diesen dann im processFormDataHook.

    So besser? Übrigens funktionieren hier noch keine Emojis (werden durch ???? ersetzt)...
    Wir sind Contao-Sponsor :-)

  15. #15
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    6.742
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Was sind denn das für zusätzliche Eingaben bzw. wo kommen die her? Nach meinem Verständnis müssten die doch auch im Formular eingetragen werden.
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




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

    Standard

    Und zusätzlich der von mlweb gestellten Frage: die gültigen zusätzlichen Werte müssen ja dem System bekannt sein und somit kannst du die neuen gültigen Werte dynamisch über einen compileFormField Hook anpassen.

    // bzw. noch besser der loadFormField Hook.
    Geändert von Spooky (05.01.2023 um 14:33 Uhr)
    » sponsor me via GitHub or PayPal or Revolut

  17. #17
    Contao-Nutzer
    Registriert seit
    30.07.2015.
    Beiträge
    140

    Standard

    das hat leider nicht geklappt, wie ich das wollte. Das war wohl auch zu kompliziert.

    Ich nutze jetzt den loadFormField Hook. So blende ich z.B auch Felder aus, wenn der User eingeloggt ist und diese bereits ausgefüllt hat.

    Trotzdem danke für eure Unterstützung!
    Wir sind Contao-Sponsor :-)

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
  •