FriendsOfREDAXO / mform

Spielend einfach umfangreiche Modul-Input-Formulare erzeugen.
MIT License
77 stars 20 forks source link

DefaultValue in Tabs wird nicht übernommen #274

Closed michael-kreatif closed 1 year ago

michael-kreatif commented 2 years ago

Wenn ein Artikel-Slice bereits existiert und einen valueString enthält, dann wird der defaultValue nicht übernommen.

Reproduzierbar durch:

  1. Modul anlegen, mehrere Select-Felder einbauen
  2. valueString sieht z.B. in der DB so aus: {"margin_top":"margin-large-top","margin_bottom":"margin-large-bottom","text_align":"text-left","width":"two-thirds"}
  3. Neues Select Feld einbauen:

padding_bottom [ '' => 'kein Abstand, 'padding-large-bottom' => 'großer Abstand', 'padding-small-bottom' => 'kleiner Abstand', ]

Das Problem sind die Zeilen: https://github.com/FriendsOfREDAXO/mform/blame/master/lib/MForm/Handler/MFormValueHandler.php#L113-L119

Hier wird zwar geprüft, ob der defaultValue im valueString existiert. Wenn er aber nicht vorhanden ist, wird der value dann auf '' (leeren String) gesetzt. Es sollte aber zuerst eher den defaultValue setzen und dann erst als Fallback leeren String.

Oder gibt es Fälle, wo es besser ist, den Value vorsichtshalber auf leerem String zu setzen?

joachimdoerr commented 1 year ago

Die "leer"-Eingabe war doch der Wünsch des Editors entgegen der default-value "Empfehlung". Es wäre sicher ärgerlich wenn man jedesmal beim Slice-Edit den default-value deselektieren müsste nur weil das Programm die gewünschte Eingabe "leer" immer wieder durch den default-value ersetzen will.

michael-kreatif commented 1 year ago

@joachimdoerr passt, verstehe dein Kommentar und so wie du es beschreibst, macht es auch Sinn, es leer zu setzen.

Bin nur nicht ganz deiner Ansicht bezüglich "sicher ärgerlich", finde das kann man auch anders sehen, weil wenn bei einem Modul, was 50x eingebaut ist, eine neue Einstellung hinzukommt und es dort laut Design ein Standard-Verhalten gibt, erwarte ich mir vielleicht auch als Redakteur, dass dieses beim Bearbeiten schon vorselektiert ist. Finde beide Szenarien machen Sinn und bleib bei deiner Lösung, weil der Programmierer kann auch den default Wert dann auf leerem String setzen und so mein erwähntes Szenario wieder schaffen.

Aber egal, danke für den Support und für mform allgemein. :)