MultipleSelectionFormField und Dependency

  • Affected Version
    WoltLab Suite 5.4
    Affected App
    WoltLab Suite Core

    Die ausgewählten Werte des MultipleSelectionFormField scheinen nicht korrekt geleert zu werden, wenn das Feld in einer Abhängigkeit steht (siehe Video). Erst nach dem erneuten Refresh, sind die Daten nicht mehr markiert.

    PHP
                BooleanFormField::create('special')
                    ->label('seo.acp.agencyCategory.special')
                    ->description('seo.acp.agencyCategory.special.description'),
                MultipleSelectionFormField::create('locations')
                    ->addDependency(EmptyFormFieldDependency::create('special')
                        ->fieldId('special'))
                    ->label('seo.acp.agencyCategory.locations')
                    ->filterable()
                    ->options(new LocationList()),

    Video.mp4

  • Tim Düsterhus February 17, 2022 at 12:38 PM

    Added the Label Feedback required
  • Hallo,

    grundsätzlich ist korrekt, dass das Feld nicht geleert wird, nur weil die Abhängigkeit nicht erfüllt ist. Das TextFormField verhält sich beispielsweise genau so.

    Nach einem erfolgreichen Absenden sollte das Formular allerdings komplett zurück gesetzt werden. Um zu beurteilen, ob da noch ein Fehler vorliegt, bräuchte ich aber ein vollständiges Beispiel-Formular, das den Fehler reproduziert.

  • Das Problem tritt ja beim updaten auf. Habe die Klassen mal soweit es geht gekürzt:

    Aber du hast recht, beim TextFormField tritt es auch auf. Liegt also nicht am MultipleSelectionFormField. Gibt für mich trotzdem irgendwie keinen Sinn. Wenn ein abhängiges Input ausgeblendet wird, weil die Abhängigkeit nicht erfüllt ist, aber vom Nutzer noch einen Wert drin hat, sollte der Wert nach Absenden nicht mehr vorhanden sein (weil der Wert ja korrekterweise auch nicht gespeichert wurde). Ansonsten kann man als Nutzer denken, wenn man nach Abspeichern die Abhängigkeit wieder aktiviert und der alte Wert noch im Feld steht, dass dieser auch gespeichert / übermittelt wurde.

  • Hallo,

    in deinem Beispiel fehlt mir noch die Implementierung von AgencyCategory. Im Speziellen: Wie wird die Auswahl vom Multiselect am Ende in der Datenbank gespeichert, bzw. umgekehrt wie wird sie wieder aus der Datenbank geladen?

    Ich konnte lokal verifizieren, dass beim „Erstellen“ eines Eintrags nach erfolgreichem Speichern alle Felder (egal ob Abhängigkeit oder nicht) wieder auf den leeren Ausgangszustand zurückgesetzt werden.

    Bei fehlerhafter Eingabe sollten alle Felder so bleiben wie sie sind (egal ob Abhängigkeit oder nicht).

    Beim Editieren sollten alle Felder nach dem erfolgreichen Speichern dem Datenbankzustand entsprechen (egal ob Abhängigkeit oder nicht). Das ist der Fall um den es hier im Thema geht und bei dem ich noch nicht beurteilen kann, ob das ein Fehler von dir oder von uns ist.

  • Ich konnte lokal verifizieren, dass beim „Erstellen“ eines Eintrags nach erfolgreichem Speichern alle Felder (egal ob Abhängigkeit oder nicht) wieder auf den leeren Ausgangszustand zurückgesetzt werden.

    Kann ich ebenso bestätigen.

    Im Speziellen: Wie wird die Auswahl vom Multiselect am Ende in der Datenbank gespeichert, bzw. umgekehrt wie wird sie wieder aus der Datenbank geladen?

    Ausgelesen werden die Daten in der Zeile: RE: MultipleSelectionFormField und Dependency

    Die war gerade noch auskommentiert, das war ein Versehen. Ich hatte es aber mit und ohne dieser Zeile probiert -> gleiches Ergebnis, daran sollte es also nicht liegen.

    AgencyCategoryAction und AgencyCategoryEditor habe ich testweise mal auf die Standardimplementation zurückgesetzt ohne irgendwas zu überschreiben. Das Problem tritt dann weiterhin auf.


    Aber wie gesagt: Wenn ich das MultipleSelectionFormField in ein TextFormField ändere, tritt das Problem ja auch auf. Hier nochmal ein Video:

    Video2.mp4

    Vllt. verstehen wir uns auch falsch?

  • Tim Düsterhus February 17, 2022 at 1:58 PM

    Set the Label from Feedback required to Confirmed

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!