Wie sortiere ich die Tabelle mit CodeIgniter?

8

Ich habe in den letzten Wochen eine Website mit CodeIgniter als Framework entwickelt. Ich habe über den besten Weg nachgedacht, etwas zu erreichen, was in vielen anderen Frameworks in anderen Sprachen relativ einfach ist: sortierbare Tabellen. CodeIgniter schaltet Abfragezeichenfolgen standardmäßig aus, da Ihre URLs Methodenparameter enthalten. So könnte eine URL wie folgt aussehen:

%Vor%

Sie könnten denken, dass Sie einfach in sortBy und sortOrder als zwei zusätzliche Parameter zur Controller-Methode hinzufügen können. Ich möchte das nicht unbedingt machen, hauptsächlich weil ich einen wiederverwendbaren Controller haben möchte. Wenn Sie Abfrage-String-Parameter verwenden, kann PHP Ihnen leicht sagen, ob es einen Parameter namens sortBy gibt. Wenn Sie jedoch URL-basierte Parameter verwenden, variiert dieser Wert je nach Controller.

Ich habe mich gefragt, was meine Möglichkeiten sind. Soweit ich sehen kann, sind sie so etwas wie:

  • Übergeben Sie meine Parameter sortBy und sortOrder , saugen Sie sie einfach auf und entwickeln Sie eine weniger als wiederverwendbare Komponente dafür.
  • Verfügen Sie über einen zusätzlichen Controller, der die sortBy und sortOrder in der Sitzung speichert (obwohl er wissen müsste, woher Sie kommen und Sie zurück zur ursprünglichen Seite schicken).
  • Habe eine Art von AJAX-Funktion, die den Controller oben aufrufen würde; dann lade die Seite neu.
  • Hack CodeIgniter, um Abfragezeichenfolgen wieder einzuschalten. Eigentlich, wenn dies die einzige Option ist, würden alle Links, um dies zu tun, geschätzt werden.

Ich kann einfach nicht glauben, dass solch eine einfache Aufgabe ein solches Problem darstellen würde! Fehle ich etwas? Hat jemand irgendwelche Empfehlungen?

Zur Klarstellung bearbeiten: Ich liebe jQuery, und ich verwende es bereits auf der Website, daher ist TableSorter eine gute Option. Ich möchte jedoch serverseitige Sortierung durchführen, da einige Seiten potenziell große Anzahl von Ergebnissen, einschließlich Paginierung, enthalten.

    
imlouisrussell 22.09.2008, 14:31
quelle

5 Antworten

5

Ich habe diese Methode verwendet: Ссылка

Ich habe es auch so erweitert, dass Cookies auf der Grundlage der Sortierung gesetzt werden. Wenn also jemand zurückkommt, wird der Tisch genauso sortiert wie zuvor.

    
Eric 23.09.2008, 14:33
quelle
2

Wenn Sie mit der Sortierung auf der Clientseite einverstanden sind, ist das Tablesorter-Plugin für jQuery ziemlich gut.

    
Nathan Long 22.09.2008 14:51
quelle
1

Ich habe das mit einem ziemlich komplexen Tisch erfahren. Der schwierige Teil war, dass die Tabelle abhängig von bestimmten Variablen wachsen / schrumpfen konnte !! Großer Schmerz: (

So habe ich es gehandhabt.

Angepasstes System / application / config / config.php um das Kommazeichen in der URI zuzulassen:

%Vor%

Stelle meinen Controller mit einer Sortierfunktion ein:

%Vor%

Ich habe es vereinfacht, aber Sie bekommen die Idee. Der Zweck ist, eine URL wie folgt zu haben:

/ Controller / Sortierer / Spaltenname, Sortierreihenfolge

Die Sortierfunktion ruft eine andere interne Funktion auf, um mit der Anzeige- / Schablonen- / Ansichtslogik umzugehen - Aufgabe ist es, mit dem Sortieraufruf umzugehen und die entsprechenden Daten aus dem Modell zu erhalten.

Natürlich könnte dies nur auf Ihre aktuelle Funktion reduziert werden:

%Vor%

Auf diese Weise brauchen Sie nicht einmal eine separate Funktion - und können mit dem dritten Segment Ihre Sortierung definieren.

    
JayTee 23.09.2008 05:16
quelle
1

Ich habe das verwendet: Ссылка

von net.tutsplus.com

Leider verwendet es, was Sie nicht mögen (/ controller / method / param1 / param2), aber ich habe dies (die Anzeigefunktion) für jeden Controller hinzugefügt, wenn ich Paginierung brauche. Oder machen Sie einen Helfer daraus.

Ein anderes Beispiel ist hier: Ссылка

    
Adrian P. 02.08.2013 05:02
quelle
0

Ich habe kürzlich diesen Table Sorter (der Prototype verwendet) zu einem Haufen hinzugefügt meiner Seiten. Es ist schnell und ziemlich einfach zu implementieren.

    
Mark Biek 22.09.2008 14:48
quelle