Bonjour,

Dans une méthode d'un controlleur je fais :

$id = $this->request->query'i'];
        $d = $this->TransportTariffDetail->find('all', array(
                                'conditions' => array('transport_tariff_header_id' => (int)$id),
                                'recursive' => -1
                                ));
        $this->set('d',$d);

Je souhaiterai paginer les résultats, mais ça ne fonctionne pas lorsque je fais par exemple

<th><?php echo $this->Paginator->sort('id');?></th>

Savez vous ce que j'ai oublié ?

Merci pour votre aide

4 réponses


extrarox
Réponse acceptée

Salut,

Dans TransportTariffDetailsController, tu dois avoir :

public $paginate = array(
    'conditions' => array('transport_tariff_header_id' => (int)$id),
    'recursive' => -1
);

Plus loin tu as :

$d = $this->paginate('TransportTariffDetail');
$this->set('d',$d);

Ensuite tu pourras faire le sort('id'), sauf si tu es pas dans une vue de TransportTariffDetail où là il faudra taper :

echo $this->Paginator->sort('id', null, array('model' => 'TransportTariffDetail'));

A+

extrarox
Réponse acceptée

Alors la réponse c'est :

$this->Paginator->options(
    array('convertKeys' => array(
            'i','d','t','c'
        )
    )
);

Essai ça, mais j'avoue que j'ai pas pu testé et que la doc pour certains points précis est super mal foutu.

A+

siriu
Auteur

Merci beaucoup, ça fonctionne parfaitement. Je croyais qu'il fallait faire un find avant d'utiliser le paginator :(

Par contre j'ai des paramètres dans mon URl : (i / d / t ) comment les conserver...

J'essaie ce code, ça fonctionne presque mais ça doit pas être ça :

$this->Paginator->options(array('url' => '?i=4&c=5&t=6&d=8'));
siriu
Auteur

ça fonctionne parfaitement :)
Merci pour ton aide