Salut,
est-ce possible de paginer un tableau construit par soi même ??
Merci.

14 réponses


Digikube
Réponse acceptée

Je pensais que tu sortait ta variable $message d'un modèl mais c'est pas le cas du coup je ne pense pas que ce soit faisable de le paginer en utilisant cake.Mais ca reste faisable en dehors de Cake dans ta vue par exemple, je te laisse aller voir de ce coté là :
http://www.sprymedia.co.uk/dataTables-1.4/example_zero_config.html

C'est à dire ?

c-à-d comment profiter du Paginator cakephp pour paginer ce tableau, sinon s'il y a d'autres Helpers.

Bien sur au lieu d'afficher tes résultats dans des div ou paragraphe tu les met dans un tableau et la logique du Paginator est identique.

et comment vais-je définir la limite ??

Dans ton controller

$this->paginate=array('Tableau'=>array(
'limit'=>'20'
));

@clement.lanot
avec cette syntaxe:

$this->paginate= array($messages => array('limite' => 1))

Warning (2): Illegal offset type [APP\Controller\messagesController.php, line ..]
et avec cette syntaxe :

$this->paginate= array('messages' => array('limite' => 1));

pas de warning mais pas de pagination !!

Enleves le "e" de "limite" comme ça :

$this->paginate= array($messages => array('limit' => 1))

toujours le même Warning (2): Illegal offset type

Tu peux copier/coller ton code de ton action complète stp ?

public function membre_index(){
        $userId = AuthComponent::user('id');
        $this->loadModel('MessageUser');
        $messagesusers = $this->MessageUser->find('all', array(
            'conditions' => array(
                'user_id' => $userId),
            'fields' => 'message_id, created'
            ));
        $lesIdMessages = array();
        foreach ($messagesusers as $key => $value) {
            $lesIdMessages$value'MessageUser']'created']] = $value'MessageUser']'message_id'];
        }
        $tousLesMessages = $this->Message->find('all', array(
            'recursive' => -1));
        $messages = array();
        foreach ($tousLesMessages as $k => $v) {
            if(!empty($lesIdMessages)){
                foreach ($lesIdMessages as $kk => $vv) {
                    if($v'Message']'id'] == $vv){
                        $messages$kk] = $v'Message']'content'];
                        unset($lesIdMessages$kk]);
                    }
                }
            }else{
                break;
            }
        }
        krsort($messages);
        //$this->paginate= array($messages => array('limit' => 1));
        $this->set('messages', $messages);
    }

@Aiftea: alors ?? :)

ok. Merci bien