1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="learning.paginator.simple">
<title>Exemplos simples</title>
<para>
No primeiro exemplo nós não faremos nada espetacular, mas com certeza isso vai
te dar uma boa idéia do que o <classname>Zend_Paginator</classname> é capaz de fazer.
Vamos pensar em um array chamado $data, com números de 1 a 100 dentro dele, que
queremos dividir em algumas páginas. Podemos usar o método estático
<methodname>factory()</methodname> da classe <classname>Zend_Paginator</classname>
para ter um objeto <classname>Zend_Paginator</classname> com nosso array dentro dele.
</para>
<programlisting language="php"><![CDATA[
// Cria um array com números de 1 a 100
$data = range(1, 100);
// Cria um objeto Paginator usando o método factory do Zend_Paginator
$paginator = Zend_Paginator::factory($data);
]]></programlisting>
<para>
Estamos quase lá! A variável $paginator agora contém uma referência para o
objeto Paginator. Por padrão ele é configurado para mostrar 10 items por página.
Para mostrar os items para a página atual, tudo que você tem a fazer é colocar
o objeto Paginator dentro de um laço foreach. Por padrão a página ativa será a
primeira caso nada esteja especificado. Nós vamos ver como você pode
especificar uma página mais tarde. O trecho abaixo vai mostrar uma lista fora de
ordem contendo números de 1 a 10, os quais são os números da primeira página.
</para>
<programlisting language="php"><![CDATA[
// Criando array com números de 1 a 100
$data = range(1, 100);
// Cria um objeto Paginator usando o método factory do Zend_Paginator
$paginator = Zend_Paginator::factory($data);
?><ul><?php
// Insere cada item para a página atual dentro de uma tag <li>
foreach ($paginator as $item) {
echo '<li>' . $item . '</li>';
}
?></ul>
]]></programlisting>
<para>
Agora vamos tentar trazer os items da segunda página. Você pode usar o método
<methodname>setCurrentPageNumber()</methodname> para selecionar qual página você quer ver.
</para>
<programlisting language="php"><![CDATA[
// Criando array com números de 1 a 100
$data = range(1, 100);
// Cria um objeto Paginator usando o método factory do Zend_Paginator
$paginator = Zend_Paginator::factory($data);
// Seleciona a segunda página
$paginator->setCurrentPageNumber(2);
?><ul><?php
// Insere cada item para a página atual dentro de uma tag <li>
foreach ($paginator as $item) {
echo '<li>' . $item . '</li>';
}
?></ul>
]]></programlisting>
<para>
Como esperado, esse trecho de código vai montar uma lista não ordenada com números
do 11 ao 20.
</para>
<para>
Esse simples exemplo demonstra um pouco do que pode ser feito com
<classname>Zend_Paginator</classname>. Entretanto, uma aplicação de verdade raramente
lê seus dados de um array estático, então a próxima sessão é responsável por mostrar
como você pode usar o <classname>Zend_Paginator</classname> para paginar resultados de
uma consulta vindo do banco de dados. Antes de prosseguir, tenha certeza de estar
familiarizado com a maneira com que o <classname>Zend_Db_Select</classname> funciona!
</para>
<para>
Em nossa base de exemplos nos vamos ter uma tabela com posts de um blog chamada 'posts'.
A tabela 'posts' tem quatro colunas: id, titulo, texto, data_criacao.
Vamos dar uma olhada em um exemplo simples.
</para>
<programlisting language="php"><![CDATA[
// Criando uma consulta. $db é o objeto Zend_Db_Adapter, que assumimos
// que já exista em seu código.
$select = $db->select()->from('posts')->order('data_criacao DESC');
// Cria um objeto Paginator usando o método factory do Zend_Paginator
$paginator = Zend_Paginator::factory($select);
// Seleciona a segunda página
$paginator->setCurrentPageNumber(2);
?><ul><?php
// Insere cada item para a página atual dentro de uma tag <li>
foreach ($paginator as $item) {
echo '<li>' . $item->title . '</li>';
}
?></ul>
]]></programlisting>
<para>
Como você pode ver, esse exemplo não é tão diferente do anterior.
A única diferença é que você passa um objeto <classname>Zend_Db_Select</classname> para o
método <methodname>factory()</methodname> da classe paginator ao invés de um array.
Para mais detalhes de como o adaptador de banco de dados executa a sua consulta de maneira
eficiente, veja o capítulo <classname>Zend_Paginator</classname> no manual de referência
sobre os adaptadores DbSelect e DbTableSelect.
</para>
</sect1>
|