Bonjour,
Actuellement j essaye de paginer les données , sans succes.
Je perds mes filtres sur la pages 2, 3 ect .
J utilise cakephp 2
Merci d'avance.
voici mon controlleur :
GenproduitsController
<?php
class GenproduitsController extends AppController {
public $helpers = array('Html', 'Form','Js' => array('Jquery'));
public $components = array('Session');
public function index() {
if(isset($this->data'Genproduit'])){
$nom= $this->data'Genproduit']'Nom_Produit'];
$code=$this->data'Genproduit']'Ref_Constructeur'];
$emplacement=h($this->data'Genproduit']'emplacementrgenpdsuivi']);
$this->paginate = array(
'conditions' => array(
'Genproduit.Ref_Constructeur LIKE'=>'%'.$code.'%',
'Genproduit.Nom_Produit LIKE'=>'%'.$nom.'%',
'Genpdsuivi.Libre2 LIKE'=>'%'.$emplacement.'%'),
'limit'=>50
);
$genproduits=$this->paginate('Genproduit');
$this->set('genproduits',$genproduits);
}
else {
$genproduits=$this->paginate('Genproduit');
}
$this->set('genproduits',$genproduits);
}
}
?>
____________________________________________________________________
Voici ma vue index
<body>
<?php
echo $this->Form->create('Genproduit');
echo $this->Form->input('Ref_Constructeur', array ('label'=>'CODE ARTICLE'));
echo $this->Form->input('Nom_Produit', array ('label'=>'DESIGNATION'));
echo $this->Form->input('emplacementrgenpdsuivi', array ('label'=>'EMPLACEMENT : '));
echo $this->Form->end('RECHERCHER');
?>
<?php
echo $this->Paginator->first('Debut');
echo $this->Paginator->prev('<<' . __(''), array(), null, array('class' => 'prev disabled'));
echo $this->Paginator->numbers();
echo $this->Paginator->next('>>' . __(''), array(), null, array('class' => 'next disabled'));
echo $this->Paginator->last('Fin');
echo '</br>';
echo $this->Paginator->counter();
?>
<table>
<tr>
<th><?php echo $this->Paginator->sort('Ref_Constructeur', 'Code article'); ?></th>
<th><?php echo $this->Paginator->sort('Nom_Produit', 'Désignation'); ?></th>
<th><?php echo $this->Paginator->sort('Libre2', 'Emplacement'); ?></th>
<th><?php echo $this->Paginator->sort('Action', 'Action'); ?></th>
</tr>
<?php foreach ($genproduits as $genproduit): ?>
<tr>
<td><?php echo $genproduit'Genproduit']'Ref_Constructeur']; ?> </td>
<td><?php echo h($genproduit'Genproduit']'Nom_Produit']); ?> </td>
<td><?php echo h($genproduit'Genpdsuivi']'Libre2']); ?> </td>
<td>
<?php
echo $this->Js->submit('IMPRIMER',array('url' => array(
'action' => 'fiche1',$genproduit'Genproduit']'Ref_Constructeur'])));
?>
</td>
</tr>
<?php endforeach; ?>
</table>
<?php echo $this->Js->writeBuffer(); ?>
</body>
il faut passer tes conditions ici
$genproduits = $this->paginate('Genproduit',$code);
Voici un exemple de ce que je fais et qui marche chez moi
dans le controller
public $paginate = array(
'paramType' => 'querystring',
'limit' =>20,
'order' => 'id DESC',
'recursive' => 0
);
Dans la fonction qui génère la pagination
public function listing($topic = null){
$conditions = array();
if(isset($topic))
$conditions = array('topic' => $topic);
$data = $this->Paginate('monModel',$conditions);
$this->set('actus',$data);
}
Et j'ai une route qui récupère en paramètre mon topic dans l'url
Router::connect('/mon-url/:topic',array('controller'=>'moncontroller','action'=>'monaction'),array('pass'=> array('topic'), 'topic' =>'[a-z0-9\-]+'));
en espérant que cela t'aide.
super, jy suis arrivé grace a vos reponse , j ai tout passer dans $this->request->params 'pass']
Un petit up.
Je dois finir, mon projet.
Et la je tourne en rond .
Quelqu un pour me mettre sur la voie.
merci d avance
J'ai eu le même problème que toi. J'ai bifurquer pour ne pas être bloquer en faisant une plus grande liste... (ce qui est assez null je l'admets mais moi aussi j'étais pressé).
Avec un peu de recul, on voit que l'on perd nos critère à cause du refresh quand on passe de la page 1 à la page 2.
Je te conseille de faire ta pagination en ajax =).
http://bakery.cakephp.org/articles/daphonz/2008/05/03/easy-ajax-pagination-using-jquery
Bonne continuation
++
Merci pour la piste d'utiliser une pagination en Ajax.
J aurais préféré utiliser la pagination classique.
Je pense que par la pagination classique on peut garder les filtres.
je ne suis pas un spécialiste de cake mais je pense que déjà il faut utiliser $this->request->data et non plus $this->data,
ensuite dans ta méthode il testerai avec $this->request->is('post') si j'ai des données postées et si oui je les passerai
à la pagination genre $this->pagination('Genproduit',$conditions)
J'espère que je suis assez clair ;)
bonjour,
meme en utilisant $this->request->data, et la methode $this->request->is('post') , des que je clique sur ma page 2 , le filtre est perdu.
et "en mode bourrin" en sauvegardant en session les données que tu veux garder ? as-tu essayé ?
Sinon il n'y a pas un truc du genre $this->request->params'pass'] ou un truc du genre dans lequel retrouver tes infos ?
Merci pour vos réponses .
Se serait super, d avoir un exemple avec un controlleur POST, et une vue index qui contient des champs input de formulaire (qui permet de déterminer les critères de tries de la pagination).
Merci d avance
merci pour ces réponses.
Ce que je n arrive pas c'est garder mes paramètres quand je change de pages.
Concrètement qd je clic sur ma pages 2 , cela devrait garder la conditions que j ai mis dans mon champs input ?
Et la cela le fais pas .
Est ce que tu récupères bien $this->request->data ? et est ce que tu les mets bien dans dans l'array en second paramètre de la pagination?
Je pense que oui , puisque je fais cela :
$code=$this->request->data'Genproduit']'Ref_Constructeur'];
$this->paginate = array(
'conditions' => array(
'Genproduit.Ref_Constructeur LIKE'=>'%'.$code.'%'
)
);
$genproduits=$this->paginate('Genproduit');
$this->set('genproduits',$genproduits);
}
Merci pour toutes tes réponses, mais meme en passant les conditions a ce moment, la .
Lorsque je clique sur pages 2 du résultat de ma pagination , j ai mes filtres qui partent.
Alors après est ce que l on est obligé de transférer les conditions dans url par les params ect...
Bonjour,
J'ai actuellement exactement le même problème que toi mais je n'arrive pas à faire fonctionner l'application.
En effet je n'arrive pas à passer mes paramètres dans params'pass'].
Je travaille avec Cake 2.3 peut être la solution a changée avec cette version...
Babyss peut tu me donner à voir ton code ? Merci
Je pense que je configure mal mes routes pour récupérer mes parametres.