Empfehlungen: Erweiterte Suche

Combobox im View Auswahl merken

Ausgabedaten formatieren und darstellen

Combobox im View Auswahl merken

Beitragvon Luckie » Mi 16. Sep 2009, 10:23

Ichhabe in einem View eine Combobox:
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?
Luckie
 
Beiträge: 115
Registriert: Fr 22. Mai 2009, 12:16
OS: Windows XP

Re: Combobox im View Auswahl merken

Beitragvon euromark » Mi 16. Sep 2009, 22:13

du solltest auf jeden fall noch auf !empty() prüfen vor der bedingung im if()
weil du sonst u.U. n warning wirfst (weil 0 als index für param pass nicht existiert)
euromark
 
Beiträge: 618
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows

Re: Combobox im View Auswahl merken

Beitragvon Alex » Mo 21. Sep 2009, 22:19

Moin Luckie,

ich geh mal davon aus das du die input-Funktion des Form-Helpers benutzt. Hier kannst im options-Array den Parameter "default" setzen. Der Wert wird dann als Standard-Wert vorausgewählt.

Hier im Cake-Manual
http://book.cakephp.org/view/189/Automa ... efault-755
Alex
 
Beiträge: 120
Registriert: Di 13. Mai 2008, 13:39
Wohnort: Bremen
CakePHP-Version: 1.x.x
OS: OSX / Win 7 / Debian


Zurück zu Views

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste