<?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>TolerantX&#039;s Blog &#187; Zend Frame</title>
	<atom:link href="http://tolerantx.com/tag/zend-frame/feed/" rel="self" type="application/rss+xml" />
	<link>http://tolerantx.com</link>
	<description>Y sin embargo se mueve</description>
	<lastBuildDate>Sat, 21 Aug 2010 04:11:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Paginar resultados con Zend_Paginator</title>
		<link>http://tolerantx.com/2008/09/29/paginar-resultados-con-zend_paginator/</link>
		<comments>http://tolerantx.com/2008/09/29/paginar-resultados-con-zend_paginator/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 04:51:10 +0000</pubDate>
		<dc:creator>TolerantX</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Paginación]]></category>
		<category><![CDATA[Zend Frame]]></category>

		<guid isPermaLink="false">http://blog.tolerantx.com/?p=88</guid>
		<description><![CDATA[Tengo poco incursionando en el Zend Framework y tuve la necesidad, como casi siempre, de paginar las consultas de la base de datos, investigando me di cuenta de que ZF ya cuenta con ésta característica y me puse manos a la obra. Primero que nada el árbol de mi sistema lo tengo de la siguiente [...]]]></description>
			<content:encoded><![CDATA[<p>Tengo poco incursionando en el Zend Framework y tuve la necesidad, como casi siempre, de paginar las consultas de la base de datos, investigando me di cuenta de que ZF ya cuenta con ésta característica y me puse manos a la obra.</p>
<p>Primero que nada el árbol de mi sistema lo tengo de la siguiente manera:<span id="more-111"></span></p>
<ul>
<li>App
<ul>
<li>application
<ul>
<li>controllers</li>
<li>models</li>
<li>views</li>
</ul>
</li>
<li>library
<ul>
<li>Zend</li>
</ul>
</li>
<li>public
<ul>
<li>images</li>
<li>scripts</li>
<li>styles</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>Si eres nuevo como yo aquí está una excelente guia para iniciar <a href="http://ajaxcode.net/descargas/Desarrollo_Aplicaciones_ZendFramework.pdf" target="_blank">Desarrolo de aplicaciones con Zend Framework</a> o bien <a href="http://framework.zend.com/docs/screencasts" target="_blank">Multimedia: Tutorial Screencasts</a> (éste último videos en inglés).</p>
<p>Primero cargamos las clases que necesitamos en el Bootstrap (archivo de arranque de configuración):</p>
<p>En mi caso hice una tabla llamada productos donde contiene una columna llamada &#8220;nombre_producto&#8221;, para esto agregamos nuestra tabla productos en la carpeta models/Productos.php con lo siguiente:</p>
<pre name="code" class="php">&lt;?php
class Producto extends Zend_Db_Table
{
	protected $_name = 'productos';
}
?&gt;</pre>
<p>Creamos nuestro controlador en application/controllers/indexController.php y quedaría de la siguiente manera:</p>
<pre name="code" class="php">&lt;?php
class IndexController extends Zend_Controller_Action
{
	public function indexAction()
	{
	Zend_Loader::loadClass('Producto');
	$producto = new Producto();

	// obtenemos la página actual
	$page = $this-&gt;_getParam('page', 1);
	// número de registros a mostrar por página
	$registros_pagina = 20;
	// número máximo de páginas a mostrar en el paginador
	$rango_paginas = 10;

	$productos = $producto-&gt;fetchAll()-&gt;toArray();

	$paginador = Zend_Paginator::factory($productos);
	$paginador-&gt;setItemCountPerPage($registros_pagina)
			  -&gt;setCurrentPageNumber($page)
			  -&gt;setPageRange($rango_paginas);

	$this-&gt;view-&gt;productos = $paginador;
	}
}
?&gt;</pre>
<p>Creamos el archivo en el cual se mostrará nuestra información en application/views/index/index.phtml:</p>
<pre name="code" class="php">&lt;?php
echo $this-&gt;paginationControl($this-&gt;productos,
	'Sliding',
	'index/pagination/pagination_control.phtml');
?&gt;
&lt;table&gt;
&lt;tr&gt;
	&lt;td&gt;Nombre Producto&lt;/td&gt;
&lt;/tr&gt;
&lt;?php foreach($this-&gt;productos as $producto): ?&gt;
&lt;tr&gt;
	&lt;td&gt;&lt;?php echo $producto['nombre_producto']; ?&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;?php endforeach; ?&gt;</pre>
<p>Por último añadimos el pagination control, yo lo coloqué en application/views/index/pagination/pagination_control.phtml, <a href="http://framework.zend.com/manual/en/zend.paginator.usage.html#zend.paginator.usage.rendering.example-controls" target="_blank">aquí</a> puedes encontrar otros dos tipos o bien crear el tuyo propio:</p>
<pre name="code" class="php">&lt;?php
if ($this-&gt;pageCount): ?&gt;
&lt;div class="paginationControl"&gt;
&lt;!-- Previous page link --&gt;
&lt;?php if (isset($this-&gt;previous)): ?&gt;
  &lt;a href="&lt;?php echo $this-&gt;url(array('page'
  	=&gt; $this-&gt;previous)); ?&gt;"&gt;&lt; Previous&lt;/a&gt; | &lt;?php else: ?&gt;
  &lt;span class="disabled"&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="&lt;?php echo $this-&gt;url(array('page'
      =&gt; $page)); ?&gt;"&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="&lt;?php echo $this-&gt;url(array('page'
  =&gt; $this-&gt;next)); ?&gt;"&gt;Next &gt;&lt;/a&gt;
&lt;?php else: ?&gt;
  &lt;span class="disabled"&gt;Next &gt;&lt;/span&gt;
&lt;?php endif; ?&gt;
&lt;/div&gt;
&lt;?php endif; ?&gt;</pre>
<p>Ésta entrada la hice basándome en la documentación oficial de <a href="http://framework.zend.com/manual/en/zend.paginator.html" target="_blank">Zend Framework</a>, espero les sea de utilidad <img src='http://tolerantx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://tolerantx.com/2008/09/29/paginar-resultados-con-zend_paginator/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
