<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tales Augusto &#187; Paginação</title>
	<atom:link href="http://www.talesaugusto.com.br/tag/paginacao/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.talesaugusto.com.br</link>
	<description>Integrando PHP e Javascript</description>
	<lastBuildDate>Thu, 07 Jan 2010 02:05:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Paginação com Zend Framework</title>
		<link>http://www.talesaugusto.com.br/paginacao-zend-framework/</link>
		<comments>http://www.talesaugusto.com.br/paginacao-zend-framework/#comments</comments>
		<pubDate>Sat, 09 May 2009 18:51:08 +0000</pubDate>
		<dc:creator>Tales</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Paginação]]></category>

		<guid isPermaLink="false">http://www.talesaugusto.com.br/?p=63</guid>
		<description><![CDATA[Mostrarei neste post como é simples fazer uma paginação usando o poderoso Zend Framework. O componente Zend_Paginator possibilita ao programador configurar uma série de opções afim de tornar a paginação mais intuitiva.
Atualmente o Zend_Paginator no permite paginar quatro tipos de model:

Array
DbSelect
DbTableSelect
Iterator

Para este exemplo farei a paginação usando o DbSelect, que acredito ser o mais utilizado [...]]]></description>
			<content:encoded><![CDATA[<p>Mostrarei neste post como é simples fazer uma paginação usando o poderoso Zend Framework. O componente Zend_Paginator possibilita ao programador configurar uma série de opções afim de tornar a paginação mais intuitiva.</p>
<p>Atualmente o Zend_Paginator no permite paginar quatro tipos de model:</p>
<ul>
<li><strong>Array</strong></li>
<li><strong>DbSelect</strong></li>
<li><strong>DbTableSelect</strong></li>
<li><strong>Iterator</strong></li>
</ul>
<p>Para este exemplo farei a paginação usando o DbSelect, que acredito ser o mais utilizado por retornar registros do banco de dados.</p>
<p><span id="more-63"></span>A primeira coisa  a ser feita é fazer a consulta ao banco de dados. Apenas selecionei todos os registros da tabela <em>cliente</em>:</p>
<pre class="brush: php;">

//fazendo a consulta no banco de dados
$db = Zend_Db_Table::getDefaultAdapter();
$select = $db-&gt;fetchAll(&quot;SELECT * FROM cliente&quot;);
</pre>
<p>Realizada a consulta, vamos criar a paginação:</p>
<pre class="brush: php;">

//criando a paginaçao
Zend_Paginator::setDefaultScrollingStyle('Sliding');
Zend_View_Helper_PaginationControl::setDefaultViewPartial('partials/paginator.phtml');
$paginator = Zend_Paginator::factory($select);

//pagina atual. Se nao vier nenhuma pagina, mostra a primeira
$currentPage = $this-&gt;_getParam('page', 1);
$paginator
-&gt;setCurrentPageNumber($currentPage)
-&gt;setItemCountPerPage(5);

//manda para a viewer
$this-&gt;view-&gt;paginator = $paginator;
</pre>
<p>As chamadas estáticas servem para mostrar ao paginator qual o tipo de paginação e qual será a template padrão da paginação. No exemplo, a template padrão será o paginator.phtml, localizado em view/scripts/partials/paginator.phtml. Segue o código dela:</p>
<pre class="brush: php;">

&lt;?php if ($this-&gt;pageCount): ?&gt;
&lt;div class=&quot;paginationControl&quot;&gt;
&lt;!-- Previous page link --&gt;
&lt;?php if (isset($this-&gt;previous)): ?&gt;
&lt;a href=&quot;&lt;?php echo $this-&gt;url(array('page' =&gt; $this-&gt;previous)); ?&gt;&quot;&gt;
&lt; Previous
&lt;/a&gt; |
&lt;?php else: ?&gt;
&lt;span class=&quot;disabled&quot;&gt;&lt; Previous&lt;/span&gt; |
&lt;?php endif; ?&gt;

&lt;!-- Numbered page links --&gt;
&lt;?php foreach ($this-&gt;pagesInRange as $page): ?&gt;
&lt;?php if ($page != $this-&gt;current): ?&gt;
&lt;a href=&quot;&lt;?php echo $this-&gt;url(array('page' =&gt; $page)); ?&gt;&quot;&gt;
&lt;?php echo $page; ?&gt;
&lt;/a&gt; |
&lt;?php else: ?&gt;
&lt;?php echo $page; ?&gt; |
&lt;?php endif; ?&gt;
&lt;?php endforeach; ?&gt;

&lt;!-- Next page link --&gt;
&lt;?php if (isset($this-&gt;next)): ?&gt;
&lt;a href=&quot;&lt;?php echo $this-&gt;url(array('page' =&gt; $this-&gt;next)); ?&gt;&quot;&gt;
Next &gt;
&lt;/a&gt;
&lt;?php else: ?&gt;
&lt;span class=&quot;disabled&quot;&gt;Next &gt;&lt;/span&gt;
&lt;?php endif; ?&gt;
&lt;/div&gt;
&lt;?php endif; ?&gt;
</pre>
<blockquote><p>Dica: Se o seu sistema possui várias paginações, seria interessante se as chamadas dos métodos estáticos mostrados acima ficassem no bootstrap. Com isso, a configuração da paginação serviria para toda aplicação.</p></blockquote>
<p>Para finalizar a paginação, falta somente o script que renderizará a listagem e mostrar a paginação:</p>
<pre class="brush: php;">

&lt;?php
if ( count($this-&gt;paginator) &gt; 0) :
foreach ($this-&gt;paginator as $item) :
Zend_Debug::dump($item);
endforeach;
echo $this-&gt;paginator;
endif;
?&gt;
</pre>
<p>Checa se a paginacao possui algum registro, faz o loop para exibir os registros e, por fim, renderiza a lista de páginas renderizadas pelo Zend_Paginator.</p>
<p>Simples assim. <img src='http://www.talesaugusto.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Leitura recomendada: <a href="http://framework.zend.com/manual/en/zend.paginator.html" target="_blank">Zend_Paginator</a></p>
<p>Abraços.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.talesaugusto.com.br/paginacao-zend-framework/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
