Pagination

A paginação de uma listagem é um recurso importante para melhorar a navegação no sistema, com uso da classe Pagination o Luna consegue realizar paginação de arrays de forma simples e gerar templates para aplicação na view:

namespace App\Controllers\Pages;

use \App\Utils\Pagination;

class Product {
    public static function getProducts($req, $res) {
        // ...
        $pagination = new Pagination($products, $page, $limit);
        $products = $pagination->get();
    }
}

A função get() retornará um a lista já paginada, quantidade de páginas e outros dados importantes para a paginação.

Template de paginação

O template para ser adicionado na view pode ser obtido também na classe:

$paginationRender = $pagination->render($req);

O retorno conterá uma lista (<li>) para que seja adicionada na view e estilizada conforme necessário.

Os componentes utilizados na criação da listagem encontram-se em /resources/components/pagination e podem ser personalizados ou alterados na chamada do render():

$paginationRender = $pagination->render($req, [
    'last' => 'last.html'
    // ...
]);

Caso deseje que algum dos itens seja removido defina o parâmetro como false.

Caso não envie os componentes os componentes padrão serão utilizados.

Para modificar a quantidade de itens que aparecem ao lado da página atual use:

$paginationRender = $pagination->render($req, [], 3);

Resultado: [1][...][4][5][6][7][8][9][10][...][99]

O href dos itens sempre utilizará o parâmetro page para definir a página destino.

Inserindo na renderização

Assim como um componente a paginação deve ser adicionada na renderização da view:

$content = View::render('pages/products', ['pagination' => $paginationRender]);

// View: <ul>{{pagination}}</ul>

Last updated