Zum Inhalt springen

formular in fluid select werte aus datenbank befüllen

Erstellt am 11. November 2014 · 3 Antworten · letzte Antwort am 11. November 2014

Tags: Fluid, ViewHelper, Frage

npre ·

hallo,

habe mir eine extension gebastelt, wo ich über eine suchformular die listenausgabe filtern kann. habe dazu ein einfaches input-text feld und eine select-box. das input-feld funktioniert einwandfrei. nur weiß nicht recht, wie ich die options vom select am besten befüllen kann.

die werte für die optionen kommen aus den einträgen der liste selber. und zwar gibt es bei jedem eintrag das feld "ort". ich möchte alle orte die in der datenbank vorkommen in die optionsfelder bringen.

im templat brauche ich für options="" ein array. nun habe ich mir gedacht, ob es nicht einfach möglich ist, die einträge, die ja in {terminKalenders} enthalten sind zu übergeben - fraglich ist, wie ich in diesem array auf den eintrag mit den orten "ort" zugreifen kann. {terminKalenders😮rt} geht auch nicht.

hier mein template eintrag

<f:form class="filterForm" method="post" action="list" name="demand" object="{demand}">
    <f:form.textfield property="name" /><br/>
   
    <f:form.select name="ort" options="{terminKalenders:Ort}" prependOptionLabel="bitte wählen" />
<f:form.submit value="Submit Search/Filter"/>

fraglich ist, ob das überhaupt so geht, oder ob ich mir eine eigene abfrage basteln muss wo ich die orte als array übergebe. ein problem ist ja auch, dass jeder ort nur 1x in den optionen vorkommen darf.

danke für eure hilfe!

lg
npre

Unbekannter Benutzer ·

Ich lasse mir für solche Fälle einfach alle möglichen Orte ins Template geben.
Wenn die Orte nur einmal vorkommen dürfen, benutzt du bei deiner SQL-Abfrage einfach SELECT DISTINCT 😉 Somit ist das auch kein "Problem" 😉

Edit: toifel war wohl schneller und eleganter. Ob das DISTINCT Problem sich auch damit lösen lässt, weiß ich allerdings nicht.

npre ·

perfekt! danke euch!! <f:form.select name="ort" options="{terminKalenders}" optionValueField="ort" optionLabelField="ort" prependOptionLabel="bitte wählen" /> gibt genau das aus, was ich brauche UND gibt jeden wert nur 1x aus, auch wenn er doppelt vorhanden ist.