Frage

Ich habe eine Seite eingerichtet, dass zeigt Server-Logs und eine Filterform hinzugefügt, damit ich die Protokolle auf bestimmte Aktionen filtern, Termine, etc. kann ich nicht scheinen, um herauszufinden, wie CPagination zu verwenden, um die Ergebnisse zu spalten in Seiten, jedoch. Wenn ich das CPagination Widget hinzufügen, wenn eine Seite aus dem Widget ausgewählt wird, wird die Filterform nicht erneut übermittelt und meine Filterergebnisse verloren.

Ich bin an einem Verlust für eine einfache Lösung meiner Filterformulardaten mit dem CPagination Widget zu halten. Irgendwelche Vorschläge wäre toll.

Update
Ich habe diese Funktion aber ich hatte einen Sitzungszustand auf meine Daten zu erhalten.

$filter=false;
$form=new LogFilterForm;
if(isset($_POST['LogFilterForm'])){
    $form->attributes=$_POST['LogFilterForm'];
    Yii::app()->user->setState('filter',$form);
    $filter=true;
}
else if(Yii::app()->user->hasState('filter')){
    $form=Yii::app()->user->getState('filter');
    $filter=true;
}

Alle Ideen, wie ich den Sitzungszustand auf der Navigation zu einer anderen Seite löschen kann?

War es hilfreich?

Lösung

Wenn Sie wurden mit CGridView es würde einfach sein, Filter mit Paging hinzufügen - es ist eingebaut. Gerade Blick auf die admin.php Blick durch das crud Werkzeug Gii gemacht (oder dem Blog Demo vielleicht auch). Vielleicht möchten Sie nicht, obwohl die Protokolle in Tabellenform angezeigt werden.

Stattdessen Session-Variablen der Einstellung, die Sie könnte die Form eine Stateful Form machen und den vorherigen Zustand mit setPageState () speichern. Ich weiß nicht, ob die Paginierung das Formular abschickt, obwohl ... Sie vielleicht ein jQuery Ereignis binden, müssen Sie das Formular ab, wenn sie auf die Paginierung Links klicken. Das wäre ein bisschen hässlich, wenn Sie das tun musste.

Wie die Sitzungszustandsvariablen für das Clearing, meine einzige Idee ist jetzt OnBeginRequest () oder etwas zu überprüfen außer Kraft zu setzen, wenn der Benutzer auf der Suchseite ist, und wenn sie nicht , dann deaktivieren Sie die Session-variablen. Man könnte es einfach lassen - ein kurzes Verfallsdatum gesetzt und vergessen. Oder speichern Sie es auf Ihrer Datenbank anstelle der Sitzung? : P

Bearbeiten

Wenn Sie die Route des überwiegenden OnBeginRequest gehen () sieht es aus wie es so einfach, wie ein Rückruf in der Konfigurationsdatei zu deklarieren. Weitere Informationen hier in den Yü-Foren und auch hier . obwohl ich habe es nie wirklich selbst getan. Viel Glück!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top