File: paginator-simple.xml

package info (click to toggle)
zendframework 1.12.9%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 133,584 kB
  • sloc: xml: 1,311,829; php: 570,173; sh: 170; makefile: 125; sql: 121
file content (125 lines) | stat: -rw-r--r-- 4,824 bytes parent folder | download | duplicates (2)
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>