Skip to content

Instantly share code, notes, and snippets.

@ScullWM
Created March 18, 2013 17:27
Show Gist options
  • Save ScullWM/5189067 to your computer and use it in GitHub Desktop.
Save ScullWM/5189067 to your computer and use it in GitHub Desktop.
Manage pagination in controller
<?php
class MyController
{
public function myAction(Request $request, App $app)
{
$pager = new Pagination();
$pager->nbreResult = 100;
if($request->getParam('nbreItemPage')!=$app->param->defaultNbreItemPage):
$pager->nbreItemPage = $request->getParam('nbreItemPage');
$request->setParam('nbreItemPage', 10);
else:
$pager->nbreItemPage = $app->param->defaultNbreItemPage;
endif;
}
}
@ScullWM
Copy link
Author

ScullWM commented Mar 21, 2013

Environement :

  • Framework php 5.3 type MVC avec des contrôleurs et des actions
  • L'appli contient une dizaine de contrôleurs (un pour chaque entité: utilisateurs, groupes, animaux, rendez-vous, lolcats etc...)
  • Pour chaque contrôleurs j'ai au moins UNE action de "listing"

Problématique:

  • Pour chaque listing, il faut une pagination en bas de page
  • Pour chaque listing, le nombre d'items affichés par page peut être défini par défaut (50 user/page mais 20 groupes/pages)
  • L'internaute doit avoir la possibilité de choisir par lui même pour chaque listing par le biais d'un menu déroulant, le nombre d'items à afficher

Le truc relou: Comment le choix d'un simple menu déroulant peut redescendre jusqu'à ma classe de pagination sans devoir transformer mes contrôleurs en "gruyère" ?

  • Devoir rajouter la partie "if/else" de mon code dans chaque action "listing" ? (Efficace mais relou, du code quasi-identique dupliqué)
  • Délocaliser ce même code dans une action dans chaque contrôleur (Juste chiant... Je paye pas le nombre de méthode, mais c'est gaché)
  • Créer un contrôleur indépendant avec une action qui récupère la valeur et surchage le bouzin ou il faut (Au final, c'est peut être la meilleure solution, mais j'ai du mal avec l'idée de créer un contrôleur dédié à cette tache, qu'il faudra garder et déplacer de projet en projet...)

(ps:Utiliser un truc comme jqgrid n'est pas forcément adapté, surtout si on à une mise en page autre qu'un tableau)

UNE IDEE ?

@chibani
Copy link

chibani commented Mar 21, 2013

Un bête héritage d'une classe PaginatedController ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment