- Code: Alles auswählen
- <h2>Filter</h2>
<form method='POST'>
<select name='cb_art' size='1' onChange='location.href=this.options[this.selectedIndex].value'>
<?php
//echo '<option>Filter setzen</option>';
echo '<option>kein Filter</option>';
$i = 1;
foreach($arten as $value)
{
$param = "/admin/referenz/paging/".$i;
echo "<option value='$param'>".$value['Art']['name']."</option>";
$i++;
}
?>
</select>
</form>
Damit werden die angezeigen Datensätze gefiltert:
- Code: Alles auswählen
- function admin_paging($zinsart_id = null) {
$this->Referenzz->recursive = 0;
$filters = $this->Referenz->getFilters($this->passedArgs);
$this->set('referenz', $this->paginate('Referenz', $filters));
if ($zinsart_id > 0)
{
$filters[] = 'zart_id='.$zinsart_id;
}
else if ($zinsart_id == 0)
{
$filters[] = null;
}
$this->set('referenz', $this->paginate('Referenz', $filters));
$arten = $this->Referenzz->Art->find('all');
$this->set('arten', $arten);
}
Nur ist es leider so, dass die Seite neu geladen wird und somit der ausgewählte Eintrag in der Combobox verloren geht. nach dem die Seite gefiltert wurde, sieht die URL so aus:
- Code: Alles auswählen
- /admin/referenz/paging/2
Der Paramter entspricht also dem Index der Combobox. Wie kann ich jetzt im View damit den Index der Combobox setzen? Ich muss doch da irgendwie drankommen können.
Ich glaube, ich habe was:
- Code: Alles auswählen
- if ($i == $this->params['pass'][0])
{
//echo "<option selected value='$param'>".$value['Zinsart']['name']."</option>";
echo "<option selected value='$param'>Ausgewählt</option>";
}
else
{
echo "<option value='$param'>".$value['Zinsart']['name']."</option>";
}
Das funktioniert, der Text "Ausgewählt" erscheint an der richtigen Stelle in der Combobox, allerdings ist er nicht ausgewählt. Kommando zurück, geht doch.
Allerdings, wenn ich den ersten Eintrag auswähle "kein Filter" erscheint der Text in der URL in der Adresszeile:
- Code: Alles auswählen
- .../paging/kein Filter
Wie kommt das?