Baza modelek Glamour Models: Modelki, Fotomodelki, Hostessy

czwartek, 13 stycznia 2011

Wiele paginacji w Kohana 3

Pokażę, jak korzystać z kilku paginacji w Kohna.
Załóżmy, że mamy stronę foto galerii, na której są miniatury, a pod nimi komentarze.
Chcemy, aby przewijanie stron z miniaturami i przewijanie stron z komentarzami było niezależne, np. przeglądamy piątą stronę ze zdjęciami i dziesiątą z komentarzami i nie chcemy, aby przejście do kolejnej strony z komentarzami spowodowało przejście do pierwszej strony ze zdjęciami.

Na początku edytujemy plik bootstrap.php:

Route::set('galeria', '(galeria(/index(/(<id1>),(<id2>))))')
    ->defaults(array(
        'controller' => 'galeria',
        'action'     => 'index',
    ));


Ustawiamy routing na kontroler galeria i akcję index.
Parametrami są id1 i id2, które będą odpowiadać za paginację zdjęć i komentarzy.
Między id1 i id2 wstawiliśmy przecinek, a nie ukośnik, dzięki któremu Kohana będzie wiedzieć, o który parametr chodzi.
Wtedy url-e będą wyglądać tak:

/galeria/index/
/galeria/index/id1,
/galeria/index/,id2
/galeria/index/id1,id2


Następnie w kontrolerze galeria.php ustawiamy paginacje:

$pag1 =  Pagination::factory(array(
        'current_page'      => array('source' => 'route', 'key' => 'id1'), // source: "query_string" or "route"
        'total_items'       => 100,
        'items_per_page'    => 10,
        'auto_hide'         => FALSE,
        'first_page_in_url' => FALSE,
 ));

$pag2 =  Pagination::factory(array(
        'current_page'      => array('source' => 'route', 'key' => 'id2'), // source: "query_string" or "route"
        'total_items'       => 200,
        'items_per_page'    => 10,
        'auto_hide'         => FALSE,
        'first_page_in_url' => FALSE,
 ));


W current_page ustawiamy source na route, a key na nazwę parametru z routingu, czyli odpowiednio id1 i id2.
Parametr auto_hide ustawiamy na false, aby paginacja była zawsze widoczna, a first_page_in_url może mieć wartość false, czyli url w paginacji do pierwszej strony nie będzie posiadał parametru id1/id2.

Brak komentarzy:

Prześlij komentarz