Wie mache ich, Tabelle Sortieren mit CodeIgniter?
Ich habe die Entwicklung einer Website in den vergangenen Wochen mit CodeIgniter als framework. Ich habe mir überlegt, der beste Weg, um etwas zu erreichen, was in einem viel weiteren Rahmen in den anderen Sprachen ist relativ einfach: sortierbare Tabellen. CodeIgniter schaltet query-strings standardmäßig, weil Sie Ihre URLs enthalten Parameter der Methode. So eine URL kann so Aussehen:
/controller/method/param1/param2
Denken Sie vielleicht, Sie könnten nur in sortBy
und sortOrder
als zwei zusätzliche Parameter an den controller-Methode. Ich weiß nicht besonders wollen, das zu tun, vor allem, weil ich will eine re-nutzbare controller. Wenn Sie verwenden den Abfrage-string Parameter, PHP können Sie leicht erkennen Sie, ob es einen parameter namens sortBy
. Aber, wenn man die Verwendung von URL-basierten Parameter variieren mit jedem controller.
Ich Frage mich, was meine Optionen waren. Soweit ich sehen kann Sie sind so etwas wie:
- Pass in meine
sortBy
undsortOrder
Parameter, nur saugen Sie es auf, und entwickeln Sie einige weniger-als-wiederverwendbare Komponente für Sie. - Haben Sie einen zusätzlichen controller gespeichert wird
sortBy
undsortOrder
in der Sitzung (obwohl es hätte wissen müssen, wo Sie kamen, und senden Sie zurück zu der ursprünglichen Seite). - Eine Art AJAX-Funktion, die Sie nennen würde-den controller oben, dann die Seite neu laden.
- Hack CodeIgniter zu drehen query-strings wieder auf. Eigentlich ist dies die einzige option, alle links mit Informationen zu diesem würde geschätzt.
Ich kann einfach nicht ganz glauben, dass so eine einfache Aufgabe würde solch ein problem darstellen! Bin ich etwas fehlt? Hat jemand irgendwelche Empfehlungen?
Edit zur Klarstellung: ich Liebe jQuery, und ich bin schon mit es auf der Website, so TableSorter ist eine gute option. Allerdings würde ich gerne tun, server-seitige Sortierung da gibt es einige Seiten mit potenziell großen Anzahl der Ergebnisse, einschließlich der Paginierung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe mit dieser Methode:
http://codeigniter.com/forums/viewthread/45709/#217816
Habe ich auch erweitert, um das setzen von cookies wird basierend auf der Art so, wenn jemand kommt wieder die Tabelle sortiert ist die gleiche wie vorher.
Wenn Sie OK mit der Sortierung auf der client-Seite, das Tablesorter-plugin für jQuery ist ganz nett.
Lief ich in diese mit einem relativ komplexen Tabelle. Der schwierige Teil war, dass die Tabelle könnte wachsen/schrumpfen je nach bestimmten Variablen!! Große Schmerzen 🙁
Hier ist, wie ich damit umgegangen..
Angepasst system/application/config/config.php zu ermöglichen, das Komma-Zeichen in der URI:
Passe meinen controller mit einer Sortier-Funktion:
Habe ich stark vereinfacht, aber Sie bekommen die Idee. Der Zweck, mit einer url wie dieser:
/controller/sorter/columnname,sortorder
Die Sortier-Funktion ruft eine interne Funktion, um sich mit der display/template/view Logik - es ist die Aufgabe befassen sich mit der Sortierung Anruf bekommen und die entsprechenden Daten aus dem Modell.
Natürlich, diese könnten reduziert werden, um nur Ihrer aktuellen Funktion:
So, Sie brauchen nicht einmal eine separate Funktion - und über das Dritte segment zu definieren, Ihre Sortierung.
Ich habe mit diesem: http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-displaying-sorting-tabular-data/
aus net.tutsplus.com
Leider ist es mit dem, was Sie nicht mag (/controller/Methode/param1/param2), aber ich habe dieses (display-Funktion) für jeden controller, wenn ich den Seitenumbruch. Oder ein Helfer von ihm.
Anderes Beispiel ist hier: http://www.robertmullaney.com/2010/09/19/tablerecord-sorting-made-easier-for-codeigniter/
Vor kurzem habe ich dieses Tabelle sorter (mit Prototyp), um ein paar meiner Seiten. Es ist schnell und Recht einfach zu implementieren.