Paginación con sfDoctrinePager
Codigo para el controlador
public function executeIndex(sfWebRequest $request)
{
//Creo una instancia de 'sfDoctrinePager' para la clase 'novedades', donde quiero mostrar 4 registros por página.
$this->pager = new sfDoctrinePager('novedades', 4);
$this->pager->setQuery(Doctrine::getTable('novedades')->createQuery('a'));
$this->pager->setPage($request->getParameter('page', 1));
$this->pager->init();
}
Luego en la vista, mostramos los registros recorriendo el paginador ‘$pager’
<?php foreach( $pager->getResults() as $row): ?>
<?php echo “título:”.$elemento->getTitulo(); ?>
<?php endforeach; ?>
Y finalmente debajo mostramos los números de las paginas junto con las flechas.
Debes modificar donde dice ‘novedades/index’ por tu modulo y acción (modulo/acción)
<?php if ($pager->haveToPaginate()): ?>
<?php echo link_to('«', 'novedades/index?page='.$pager->getFirstPage()) ?>
<?php echo link_to(‘<’, ‘novedades/index?page=’.$pager->getPreviousPage()) ?>
<?php $links = $pager->getLinks();foreach ($links as $page): ?><?php echo ($page == $pager->getPage()) ? $page : link_to($page, ‘novedades/index?page=’.$page) ?><?php if ($page != $pager->getCurrentMaxLink()): ?> –<?php endforeach ?><?php echo link_to(‘>’, ‘novedades/index?page=’.$pager->getNextPage()) ?><?php echo link_to(‘»’, ‘novedades/index?page=’.$pager->getLastPage()) ?><?php endif ?><div class=”pagination_desc”><strong>getNbResults() ?> Registros de Novedades<?php if ($pager->haveToPaginate()): ?>- page <strong>getPage() ?>/getLastPage() ?>
Hola, encontré un par de errores en el codigo, aún así gracias por la ayuda! Posteo el codigo que logré hacer andar:
En el action:
public function executeIndex(sfWebRequest $request)
{
$this->pager = new sfDoctrinePager(‘persona’, 3);
//persona es 1 tabla de mydb con atributo nombre y apellido
$this->pager->setQuery(Doctrine::getTable(‘persona’)->createQuery(‘a’));
$this->pager->setPage($request->getParameter(‘page’)); //aqui habia error
$this->pager->init();
}
En el template:
getResults() as $row): ?>
getPersonanombre();?>
getPersonaapellido();?>
haveToPaginate()):;?>
getFirstPage());?>
<?php echo link_to('getPreviousPage());?>
getLinks();?>
getPage()) ? $page : link_to($page, ‘prueba/index?page=’.$page);?>
getCurrentMaxLink()):;?>
//este endif no estaba
‘, ‘prueba/index?page=’.$pager->getNextPage());?>
getLastPage());?>
Total Personas: getNbResults() ?>
haveToPaginate()): ?>
- Pag. getPage() ?>/getLastPage() ?>
Espero sirva a alguien más! Saludos symfoneros!!
Gracias Ana!! Saludos
Gracias, está clarito, mejor que el ejemplo de Jobeet.
Que bueno que te haya servido! Yo también habia intentado hacerlo siguiendo el ejemplo de Jobeet, pero estaba mas complicado.
gracias me funciono esta solucion
Gracias amigo me sirvio de mucho, igual yo detecte esos errositos en el Template, pero tu ejemplos esta excelente, como dicen los demas, mejor que el de Joobet
muy agradecido, tenia problemas con esto de las paginaciones, el libro de doctrine no lo comprendi como esperaba, pero por hora mis dudas estas resultas, se viene un nuevo dia y con ellos nuevas dudas
Pretty section of content. I just stumbled upon your web site and in accession capital to claim that I acquire in fact
enjoyed account your blog posts. Any way I’ll be subscribing on your feeds or even I fulfillment you access persistently fast.