Inicio > Doctrine, symfony > Paginación con sfDoctrinePager

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() ?>

Categorías:Doctrine, symfony
  1. Ana
    9 julio 2010 a las 1:18 am | #1

    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!!

  2. adm
    9 julio 2010 a las 2:08 pm | #2

    Gracias Ana!! Saludos

  3. Furbyx
    25 julio 2010 a las 10:27 pm | #3

    Gracias, está clarito, mejor que el ejemplo de Jobeet.

  4. adm
    25 julio 2010 a las 11:08 pm | #4

    Que bueno que te haya servido! Yo también habia intentado hacerlo siguiendo el ejemplo de Jobeet, pero estaba mas complicado.

  5. miguel segura
    11 septiembre 2010 a las 10:56 pm | #5

    gracias me funciono esta solucion

  6. Sergio Castillo
    23 febrero 2011 a las 4:12 pm | #6

    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

  7. machete
    19 mayo 2011 a las 2:03 am | #7

    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

  8. 4 abril 2012 a las 10:20 pm | #8

    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.

  1. Aún no hay trackbacks

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.