Comment dois-je faire à la table de tri à l'aide de CodeIgniter?
J'ai été le développement d'un site au cours des dernières semaines, à l'aide de CodeIgniter que le cadre. J'ai pensé à la meilleure façon d'accomplir quelque chose, qui dans beaucoup d'autres cadres dans d'autres langues est relativement simple: tableaux triables. CodeIgniter éteint les chaînes de requête par défaut, parce que votre Url contient les paramètres de la méthode. Si une URL comme:
/controller/method/param1/param2
Vous pourriez penser que vous pouvez simplement ajouter dans sortBy
et sortOrder
que deux autres paramètres à la méthode de contrôleur. Je n'ai pas particulièrement envie de faire cela, surtout parce que je veux avoir une ré-utilisable contrôleur. Lorsque vous utilisez des paramètres de chaîne de requête, PHP peut facilement vous dire si il y a un paramètre appelé sortBy
. Toutefois, lorsque vous utilisez des URL en fonction des paramètres, elle varie avec chaque contrôleur.
Je me demandais ce que mes options. Aussi loin que je peux voir, ils sont quelque chose comme:
- Passer dans mes
sortBy
etsortOrder
paramètres, le sucer, et de développer des composants réutilisables. - Avoir un contrôleur supplémentaire, qui permet de stocker les
sortBy
etsortOrder
dans la session (bien qu'il faut savoir d'où vous êtes venus, et vous renverra à la page d'origine). - Avoir une sorte de fonction AJAX, qui serait d'appeler le contrôleur ci-dessus; puis rechargez la page.
- Hack CodeIgniter pour tourner les chaînes de requête de retour sur. En fait, si c'est la seule option, tous les liens à la façon de faire serait appréciée.
Je ne peux pas croire une telle tâche simple serait de présenter un tel problème! Ai-je raté quelque chose? Quelqu'un aurait-il des recommandations?
Modifier pour la clarification: j'aime jQuery, et je suis déjà sur le site, donc TableSorter est une bonne option. Cependant, je tiens à faire côté serveur le tri il y a quelques pages avec potentiellement un grand nombre de résultats, y compris la pagination.
OriginalL'auteur | 2008-09-22
Vous devez vous connecter pour publier un commentaire.
J'ai été en utilisant cette méthode:
http://codeigniter.com/forums/viewthread/45709/#217816
J'ai aussi élargi à créer des cookies en fonction de la génération, de sorte que lorsque quelqu'un revient le tableau est trié le même qu'avant.
OriginalL'auteur Eric
Si vous êtes OK avec tri sur le côté client, le Tablesorter plugin pour jQuery est assez agréable.
Tablesorter charge la totalité du résultat de la requête en une seule fois, ce qui n'est pas adapté si vous souhaitez charger un grand nombre de données.
il dispose d'une fonctionnalité de pagination intégrée, mais je n'ai pas essayé, et vous êtes toujours à droite si l'ensemble de données est assez grand.
Le plugin est fantastique, mais même pour 1000 lignes de la page HTML sera rendu pour la première fois sans style. Mieux utiliser côté serveur si vos données est de plus de 200 lignes. Essayer jsfiddle.net/Mottie/4mVfu/411
OriginalL'auteur Nathan Long
J'ai couru avec une assez complexe à table. La partie difficile est que le tableau pourrait croître/rétrécir en fonction de certaines variables!! Grande douleur 🙁
Voici comment j'ai géré ça..
Ajusté system/application/config/config.php pour permettre la virgule dans l'URI:
Régler mon contrôleur avec une fonction de tri:
J'ai simplifié à l'extrême, mais vous obtenez l'idée. Le but est d'avoir une url comme ceci:
/contrôleur/trieur/columnname,sortorder
Le sélecteur de fonction en appelle une autre fonction interne pour traiter de l'écran/modèle/vue de la logique - c'est le travail consiste à traiter le tri des appels et d'obtenir les données à partir du modèle.
Bien sûr, cela pourrait être réduit à votre fonction actuelle:
De cette façon, vous n'avez même pas besoin d'une fonction distincte - et peut utiliser la troisième segment à définir votre tri.
Merci, c'est très utile!
OriginalL'auteur JayTee
J'ai été en utilisant ce: http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-displaying-sorting-tabular-data/
de net.tutsplus.com
Malheureusement, c'est à l'aide de ce que vous n'aimez pas (/contrôleur/méthode/param1/param2) mais j'ai ajouté ce (fonction d'affichage) pour chaque contrôleur quand j'ai besoin de la pagination. Ou faire un helper.
Autre exemple est ici: http://www.robertmullaney.com/2010/09/19/tablerecord-sorting-made-easier-for-codeigniter/
OriginalL'auteur Adrian P.
J'ai récemment ajouté cette Tableau trieur (qui utilise Prototype) à tout un tas de mes pages. C'est rapide et assez facile à mettre en œuvre.
OriginalL'auteur Mark Biek