Messa1 / contao-database-select-table

A table select field for the frontend in contao.
MIT License
4 stars 0 forks source link

Field "value" only accepts field "id" #3

Open Aybee opened 6 years ago

Aybee commented 6 years ago

Wenn man beim Feld "Value" ("Value Feld wählen.") ein Feld auswählt, dann ist im FE das value Attribut leer und alle Options stehen auf selected. Einzige Ausnahmen ist, wenn man das Feld "id" wählt.

<select name="member" id="ctrl_50" class="select mandatory" required="">
  <option value="">- bitte wählen -</option>
  <option value="" selected="">d.evans</option>
  <option value="" selected="">j.doe</option>
  <option value="" selected="">j.smith</option>
</select>

Das Absenden schlägt dabei natürlich fehl. (Würde ja auch keinen Sinn machen.)

Messa1 commented 6 years ago

Habe gerade einen Test mit dem standard Contao Formular Feld durchgeführt. Hier sieht der HTML Code wenn ich ein Select nur aus Bezeichnungen erstelle genau so aus.

Code // Standard Select Contao

<select name="select" id="ctrl_16" class="select">
<option value="">1 Option</option>
<option value="">2 Option</option>
</select>

Und das Formular wird trotz leerem Value versendet.

In meiner Test Umgebung und meiner eigenen Website funktioniert das senden mit meiner Erweiterung auch wenn das value Feld leer ist. Darum stellt sich mir die Sinnfrage nicht, da es so von Contao kommt ;)

Aber ich kann bei der DCA (hier hole ich die Felder) noch eine Abfrage einbauen, dass nur Felder mit Werten auswählbar sind und die andren nicht angezeigt werden.

Messa1 commented 6 years ago

Das "required" habe ich bei dir im Code überlesen. Stimmt, da wird das Formular nicht gesendet, da es als Pflichtfeld auch values braucht.

Hier stellt sich mir eine weitere Frage, wie soll das bei Einträgen funktionieren bei denen Einträge in diesem Feld ein Wert haben und andere nicht?

Das würde dann so aussehen:

<select name="select" id="ctrl_16" class="select mandatory" required="">
<option value="">1 Option</option>
<option value="Hier-ist-ein-Wert-vorhanden">2 Option</option>
</select>

1. Möglichkeit = Ich lasse es so - Beim Testen sollte es jedem Entwickler auffallen 2. Möglichkeit = Ich frage ab ob Felder leer sind sobald ein Eintrag bei diesem Feld nichts drinnen hat wird es komplett ausgeblendet - Sonst kommt es zu der Ausgabe wie Oben in dem Beispiel 3. Möglichkeit = Ich schränke es komplett ein User kann nur noch ID oder das Bezeichnungsfeld als Value verwenden.

Aybee commented 6 years ago

value

Ja, ID ist die beste Wahl für value, aber dann steht in der versendeten Mail die ID. Meistens möchte man dort aber etwas lesen können. Also doch mehrere Felder anbieten, aber eigentlich machen da nur unique fields Sinn. Wenn man z.B. firstname wählt, ist dies ja nicht eindeutig.

Kann das sein, dass das value nicht leer sein darf, aber ganz fehlen darf? https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option

Damit wäre das Feld value eigentlich optional, also nur auswählen, wenn nicht der Inhalt von Option gesendet werden soll. Dann aber kein leeres value rendern. Aber Bei einem Core select mandatory kann man das auch nicht absenden, wenn man die Values nicht ausgefüllt hat.

Leeres Feld (option)

Ein leeres Feld sollte bei mandatoy automatisch hinzugefügt werden, mit einem value="", damit man ohne Aktion nicht das erste Option sendet und durch value="" darauf hingewiesen wird, dass man noch keine Auswahl getroffen hat.

 <option value="">- bitte wählen -</option>

Ein leeres Feld bei nicht mandatory kann auch einen Wert enthalten, entweder.

 <option>- bitte wählen -</option>
 <option value="nichts gewählt">- bitte wählen -</option>

selected

Und warum hast du dort nicht dieses Attribut selected auf allen Options, wenn die values keinen Wert haben? Was ja definitiv ein Bug ist.

Aybee commented 6 years ago

Evtl. ist das auch verwandt mit diesem Ticket https://github.com/contao/core/issues/8808

Messa1 commented 6 years ago

Value: Ich arbeite gerade an Lösung 2.

Leeres Feld: Sehe ich kein Bedarf dafür, da mit der Checkbox ein leeres Feld hinzugefügt werden kann.

Selected: Muss ich mir ansehen.