Hallo, ich baue in einem Template ein Formular u.A. mit einer Select-Box.
Die Box wird aus einer Liste des Models "Event" befüllt.
Wird ein Event gewählt, so wird es auch dem Model des Formulares zugeordnet und abgespeichert etc.
Nun möchte ich aber, dass die Möglichkeit besteht, dass nicht nur kein Event gewählt werden kann sondern auch, dass ein vormals gewähltes Event abgewählt werden kann. Dazu habe ich mit prependOption*** ein weiteres Elemnt dazugenommen.
Leider funktioniert die Geschichte nicht, da weder die UID "0" oder auch "NULL" nicht akzeptiert werden.
Was muss ich tun?
<f:form.select prependOptionLabel="-.-" prependOptionValue="0" property="event" options="{events}" optionValueField="uid" optionLabelField="title"/>
Es funktioniert jetzt. (T3 6.2)
Da ich im Netz keine Antwort auf das oben geschilderte Verhalten gefunden habe, hier mein recht einfache Lösung:
Es soll ja prependOptionValue="0" die Model-Beziehung bei Auswahl von prependOptionLabel="-.-" entfernen.
<f:form.select prependOptionLabel="-.-" prependOptionValue="0" property="event" options="{events}" optionValueField="uid" optionLabelField="title"/>
Im Model steht für den Setter:
public function setEvent(\Vendor\Ext\Domain\Model\Event $event) {
$this->event = $event;
}
Ich habe lediglich den Setter umgeschrieben:
public function setEvent(\Vendor\Ext\Domain\Model\Event $event = NULL) {
$this->event = $event;
}
und die UID 0 wird akzeptiert.
Hallo,
bei mir funktioniert das grundsätzlich, aber nur wenn in der Selectbox von vornherein der prependOptionValue-Eintrag ausgewählt ist (ZB noch nie gesetzt, oder im Backend auf 0 zurückgesetzt).
Wenn ich allerdings einen Wert in der Selectbox einstelle, speichere und in Folge wieder auf 0 einstellen möchte, kommt diese Exception:
#1297933823: Object of type VENDOR\EXTKEY\Domain\Model\Modelname with identity "0" not found.
Weißt du da weiter?
Klappt's inzwischen?
Welche Exception/Fehlverhalten dadurch ausgelöst werden, weiß ich jetzt auch nicht so genau.
Aber mir sind da zwei triviale Punkte eingefallen, die stören könnten.
Im Model sollte kein @validate NotEmpty stehen, wenn die Null zulässig sein soll.
Und in der Datenbank (ext_tables.sql) sollte man ebenfalls die Null, genauer die 0 zulassen.
Das geht in der Regel mit DEFAULT '0' NOT NULL.
...eigentlich ja trivial.
Gruß