| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- <?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>
|