Disons que j'ai cette page avec Pagination:problème de pagination CakePHP avec suivant/précédent
localhost/fr/utilisateurs/index/page: 1
Je vois les résultats corrects pour la page 1 basée sur la façon dont je J'ai défini le var paginate dans mon contrôleur. Mais quand je clique sur le bouton suivant, l'url change en page: 2 mais les résultats ne changent pas et sont les mêmes que page: 1, même chose pour la page: 3, page: 4 et ainsi de suite ...
Si je trier d'abord une colonne, disons nom d'utilisateur, alors je peux utiliser le lien précédent/suivant sans aucun problème, les données changent sur chaque page.
La seule chose que je peux penser à qui pourrait me causer problème est que j'utiliser une langue dans param mes urls, mais je ne sais pas comment résoudre ce problème ...
J'utilise actuellement gâteau 1.2. 5 J'ai aussi essayé avec la version 1.3 beta avec les mêmes résultats.
Ok, donc voici mon utilisateur code du contrôleur:
var $paginate = array('limit'=>'5');
function index() {
$this->User->recursive = 0;
$this->set('users', $this->paginate());
}
J'utilise tutoriel teknoid pour la commutation de la langue:
URL-based language switching...
langue param ajoutée par app_helper.php
function url($url = null, $full = false) {
if(!isset($url['language']) && isset($this->params['language'])) {
$url['language'] = $this->params['language'];
}
return parent::url($url, $full);
}
et le changement de langue effectué en utilisant une méthode dans le app_controller.php:
function _setLanguage() {
if ($this->Cookie->read('lang') && !$this->Session->check('Config.language')) {
$this->Session->write('Config.language', $this->Cookie->read('lang'));
}
else if (isset($this->params['language']) && ($this->params['language']
!= $this->Session->read('Config.language'))) {
$this->Session->write('Config.language', $this->params['language']);
$this->Cookie->write('lang', $this->params['language'], null, '20 days');
}
}
SOLUTION:
Après avoir configuré le site patron de Yahoo et de remarquer que la pagination fonctionnait parfaitement, je regardais plus attentivement mon code et a trouvé le problème était dans ma routes.php .
J'ai eu ceci:
Router::connect('/news', array('controller'=>'news', 'action'=>'index'));
Router::connect('/:language/news', array('controller'=>'news', 'action'=>'index'), array('language'=>'[a-z]{2}'));
je l'ai modifié comme celui-ci de prendre toutes les params:
Router::connect('/news/*', etc...
Router::connect('/:language/news/*', etc...
Un peu de code aiderait, en particulier l'action 'UsersController :: index()', et peut-être quelques détails sur la façon dont vous faites le paramètre de langue. – deceze