Benutzerdefinierte Abfragefelder im Joomla-Kontaktformular mit Abhängigkeit

  • Joomla Version
    4.4.0
    PHP Version
    PHP 8.1.x
    Hoster
    Mittwald

    Hallo Zusammen,


    ich habe eine Frage zu den Custom Fields im Joomla-Kontaktformular.


    Wir würden gerne ein Kontaktformular erstellen mit voneinander abhängigigen Abfragefelder.
    Im Formular soll es eine Liste geben, wo der User das Thema seines Anliegens auswählt und in Abhängigkeit des gewählten Themas sollen dann die weiteren, zugehörigen Abfragefelder erscheinen.

    Ist so etwas möglich? Kann das mit den Subforms oder der Funktion "Attribut anzeigen" in den Optionen des Custom Fields eingestellt werden?
    Ich bin leider noch nicht ganz schlau daraus geworden.


    Ich freue mich auf Eure Rückmeldung.


    Beste Grüße
    Tanja

  • Das "Showon Attribut" (deutsch: "Attribut anzeigen"). Einfaches Beispiel anhand User-Feld.


    - Ich lege 2 Felder an:

    - - "Feld1-Liste" mit "Alias/Name" "feld1-liste". Diese Liste hat 2 Auswahlmöglichkeiten: "Erna" und "Peter"

    - - "Feld2-Text" mit "Alias/Name" "feld2-text". Diese Textfeld bekommt einen Eintrag in "Showon Attribut":

    Code
    feld1-liste:Peter

    Wähle ich dann "Erna", wird das Textfeld nicht angezeigt:


    Wähle ich "Peter", wird das Textfeld angezeigt:


    Das showon ist ein Formular-Standard-Feature in Joomla. Die Regeln, die man verwenden kann, können jedoch u.U. "verwirrend" sein bzw. es ist viel mehr möglich, als in der Doku zu sehen: https://docs.joomla.org/Form_field#Showon


    Mit einer DuckDuckGo-Suche nach "Joomla showon" findet man ein bisschen was. Ich persönlich suche aber meist im.Joomla-Core nach

    Code
    showon="

    in XML-Dateien. Manchmal findet sich Erstaunliches ;)


    EDIT: Das showon bedeutet nicht, dass eingetragene und dann ausgeblendete Werte von alleine verschwinden. Trage ich bei "Peter" was in das Textfeld ein, schalte auf "Erna" um, ist das Feld zwar weg. Trotzdem wird der Text-Inhalt mit dem Formular gespeichert.

  • Nun habe ich leider ein Problem beim Abschicken des Kontaktformulars.
    Wenn ich in meiner Liste z.B. die erste Option wähle, dann werden alle davon abhängigen Felder eingeblendet. Das klappt wunderbar.
    Allerdings kann das Formular nicht abgesendet werden, da die von Option 2 abhängigen Felder (die bei der Auswahl von Option 1 ja nicht angezeigt werden) als Pflichtfelder eingestellt wurden und scheinbar auch im ausgeblendeten Zustand erforderlich sind, um das Formular abzusenden.


    Hat hierfür jemand eine Lösung?


    LG Tanja

  • Ja und ich glaube nicht, dass es seitens Core schon eine Lösung gibt. Alle Diskussionen, die ich bisher gefunden habe, lehnen es letztlich ab, da im Joomla-Core was praktikables einzubauen. Aber ich bin auch nicht ganz auf dem Laufenden.


    Ansätze, die mir bisher bekannt sind:

    - Den required-Feldern ein Default Value eingeben. Das ist aber doof, da man ja dann trotzdem absenden kann, selbst, wenn nichts vom Beucher eingegeben wurde. Man bräuchte wohl zusätzlich ein Plugin, das die Daten prüft und das Absenden blockiert.

    - Per JavaSript das required-Attribut und weitere des Feldes zurücksetzen, sobald es ausgeblendet wird.