{Symfony}Système de pagination

Rechercher

{Symfony}Système de pagination

Par saturn1  -  6 reponses  -  Le 25/01/2009 20:29  -  Editer  - 

Suite au dernier post que j'ai fais j'ai voulu rajouté un système de pagination.

Voici donc mon nouveau controleur

public function executeShow(sfWebRequest $request)
  {
  $this->category = Doctrine::getTable('BlogCategory')->findOneBySlug($request->getParameter('slug'));
  $this->forward404Unless($this->category);
  $this->pager = new sfDoctrinePager(
    'BlogArticle',
    sfConfig::get('app_article_per_page')
  );
  $this->pager->setQuery($this->category->getArticle());
  $this->pager->setPage($request->getParameter('page', 1));
  $this->pager->init();
  }

Il me génère une error fatal

Fatal error: Call to undefined method Doctrine_Collection::offset() in C:\development\sfprojects\blog\lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\pager\sfDoctrinePager.class.php on line 78

Pourtant j'ai fais un copié/collé du tutorial^^.

Merci de ton aide :p

 

Réponses apportées à cette discussion

Par saturn1  -  Le 25/01/2009 21:35  -  Haut de page  - 

Ok j'ai trouvé.

Le execute se faisait automatiquement sur la requête, il fallait donc l'enlever.

Par contre je trouve un défaut, si j'ai que deux pages.

Mais si je tape ?page=3 sa ne m'affiche rien. Le top serait que cela redirigerait vers la page 1.

Merci

 
Par Emacs  -  Le 26/01/2009 13:02  -  Haut de page  - 

Ce n'est pas à l'objet de pager de gérer une éventuelle redirection. Ce n'est pas son rôle mais celui du contrôleur. Donc à toi de vérifier que ce que tu peux reçois comme valeur de $page est strictement supérieur à $pager->getLastPage(). Si c'est le cas, tu rediriges vers la page 1 ou bien la dernière page.

 
Par saturn1  -  Le 26/01/2009 13:38  -  Haut de page  - 

Ok et dans le template jai le droi de faire un if ki test et affiche ou non le lien ver la premier page sinon la pagination fo la metr ds un partial?pour pou voir la reutilisé

 
Par Emacs  -  Le 26/01/2009 15:43  -  Haut de page  - 

Peux-tu éviter le langage SMS stp...

 
Par saturn1  -  Le 26/01/2009 19:35  -  Haut de page  - 

Ok et dans le template jai le droit de faire un 'if' qui test et affiche ou non le lien ver la première page?

Par exemple si on est déjà à la première page je n'affiche pas le bouton 'Première page'.

Sinon la pagination faut la mettre dans un partial?pour pouvoir la reutiliser?

Merci, désolé mais j'étais sur mon téléphone portable c'est pour sa que j'ai écris en sms.

 
Par Emacs  -  Le 27/01/2009 21:24  -  Haut de page  - 

Oui tu fais comme pour le pager de Jobeet pour la pagination. Tu le mets dans un partial du répertoire /apps/frontend/templates afin que tu puisses l'appeler dans n'importe quel module avec :

<?php include_partial('global/pager', array('pager' => $pager)); ?>

++

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |