Zum Inhalt springen

SelectBox mit Default-Werten

Erstellt am 12. April 2011 · 3 Antworten · letzte Antwort am 15. April 2011

Tags: Frage

schittl ·

Hallo,

möchte eine Selectbox rendern lassen als Suchfilter, welche wie folgt aussehen soll.

<select>
<option value="0" selected="selected">Alles</option>
<option value="1">Wert0</option>
<option value="2">Wert1</option>
.....
</select>

Da habe ich mir die Extension "sjr_offers" angeschaut. Diese macht folgendes im OfferController

$this->view->assign('regions',array_merge(array(0 => 'Alle Stadtteile'),$this->regionRepository->findAll());

Dachte ich mir das ist es und wollte es implementieren in meiner Extension. Leider blieb die Selectbox leer. Daraufhin die extension selbst ausprobiert und siehe da, dort blieb Sie auch leer. Folgender View füllte aber die SelectBox:

$this->view->assign('regions',$this->regionRepository->findAll());

Hat jemand ne Idee wie man so etwas implementieren kann oder was der Fehler ist? Muss man das selber schreiben im Template?

Danke im vorraus.

mfg
schittl

Razor_One ·

Ich denke das Problem ist, das du ein normales Array mit einem Array von Region-Objekten zusammenführst.

Probiers mal so:

$region_default = t3lib_div::makeInstance('Hier_Klassen_Name_Von_Region_Objekt');
$region_default->setValue('0'); // oder UID?
$region_default->setName('Alle Stadtteile');
$region_all[] = $region_default;

$region_repository = t3lib_div::makeInstance('Hier_Klassen_Name_Von_Region_Repository');
$regions = $region_repository->findAll();
foreach ($regions as $temp) {
    $region_all[] = $temp;
}

$this->view->assignMultiple(array(
    'regions' => $region_all,
));

So hat es für mich mit einer Sprachauswahl funktioniert. (Da fehlt auch die Defaultsprache in der db)

Wenn jemand einen kürzeren Weg hat bitte melden 🙂

schittl ·

Danke erstmal. Habe nur noch folgendes Problem mit

$region_default->setUid('0');

Folgendes steht in der Ausgabe:

<option value="Tx_SjrOffers_Domain_Model_Region:0">Alle Stadtteile</option>
<option value="1">Ost</option>
<option value="2">West</option>
<option value="3">Nord</option>

Warum nicht nur 0? Bei bestätigen des Suchformulars kommt dann bei Auswahl Option 1 folgendes:

transformToObject() accepts only numeric values and arrays