No tutorial anterior, criamos um upload de imagens para servirem de capa para nossos posts, agora vamos instalar e configurar um Bundle, disponibilizado pela comunidade, para fazer a paginação de nossa página index. Para isso temos que instalar o Knp Paginator em nossa aplicação.
Instalação do Knp Paginator
Para instalar o Knp Paginator, temos que adicioná-lo em nosso composer.json. Abra o arquivo composer.json e adicione a linha abaixo:
Caso não o conheça, ou tenha dúvidas, leia este post (Composer para iniciantes).
Depois de adicionado o Knp Paginator no composer, vamos instalá- lo. Entre no terminal e digite:
Após o Download, o Knp Paginator está instalado em nossa aplicação.
Configurando o Knp Paginator
A primeira configuração que devemos fazer, é registrar o novo bundle instalado, para isso entre no AppKernel, caminho: app/AppKernel.php
Adicione a linha abaixo no registro de bundles:
Veja na linha 16:
Pronto o Knp Paginator está registrado.
Agora vamos fazer as configurações padrões no Knp, para isso entre no arquivo config.yml, caminho: app/config/config.yml
No final do arquivo adicione as configurações abaixo:
Essas configurações foram tiradas da documentação do Knp Paginator
Configurando o Controller
Depois de termos feito as configurações de instalação do Knp Paginator, vamos configurar nosso controller, para isso entre no IndexControlerController, caminho: src/Tableless/CoreBundle/Controller/IndexControlerController.php
Primeiramente para pegar o número de páginas, de acordo com a quantidade de posts temos que usar o request do symfony, então vamos dar um use em Request, veja na linha 8:
Em nossa indexAction temos que pegar a biblioteca do paginador, passar nosso posts, pegar as páginas via request, e quantidade de posts que queremos por páginas, e retorná- los em forma de array para que nossa view possa apresentar. Em meu caso vou usar apenas três posts por página.
Veja:
Configurando a View
Nosso controller está configurado, agora temos que configurar nossa view, para que a mesma apresente os posts, com a paginação.
Entre na view index.html.twig, caminho: src/Tableless/CoreBundle/Resources/views/IndexController/index.html.twig
Em nossa index, temos um for, que está recebendo a variável posts, vamos trocar a variável posts por pagination, que foi a variável que passamos em nosso controller, veja:
de:
troque por:
E onde queremos que nossa paginação fique, vamos colocar o código abaixo:
Veja nossa index.html.twig pronta
Rode o servidor:
Entre na url:
https://127.0.0.1:8000
Veja a imagem:
Estilizando a paginação
Podemos perceber, que a paginação está sem estilização, porém como estamos utilizando o bootstrap, vamos entrar no arquivo config.yml, caminho: app/config/config.yml
E vamos alterar o pagination da tamplete do knp_paginator
de:
para:
Atualize a página, e pronto, veja:
Conclusão
Pronto, nosso simples projeto está fazendo a paginação de posts, no próximo tutorial vamos configurar outro Bundle, onde faremos o slug para nossos posts, para que nossas urls, fiquem um pouco mais amigáveis.
Links dos tutoriais anteriores:
Iniciando com Symfony 2 – Instalação
Iniciando com Symfony 2 – parte 02
Iniciando com Symfony 2 – parte 03
Iniciando com Symfony 2 – parte 04
Iniciando com Symfony 2 – parte 05
Iniciando com Symfony 2 – parte 06
Iniciando com Symfony 2 – parte 07
O projeto encontra-se no GitHub!