Paginación en cakePHP: Paginator (helper en vistas)

Los datos recuperados por Paginator se muestran en las vistas de igual manera que los recuperados por otras funciones (como el find). Pero tenemos un helper que nos permite dibujar elementos de paginación de una manera sencilla.

Por ejemplo, para mostrar cabeceras que se puedan ordenar, podemos usar ‘sort:

echo $this->Paginator->sort('post_id');

Podemos ponerle un título alternativo:

echo $this->Paginator->sort('post_id', 'Código');

Para mostrar los números de página tenemos la función ‘numbers’:

echo $this->Paginator->numbers();

Tenemos muchas opciones:

  • before Insertar contenido antes de los números.

  • after Insertar contenido después de los números.

  • modulus Cuantos números de página, por defecto 8

  • separator Separador, por  defecto ` |`

  • tag El tag html que rodea los números, por defecto <span>.

  • first Si lo ponemos tendremos un enlace a la página inicial. Podemos poner el texto o el número de páginas a mostrar. El primero muestra un enlace con texto y el segundo las dos primeras páginas:

    echo $this->Paginator->numbers(array('first' => 'First page'));
    
    echo $this->Paginator->numbers(array('first' => 2, 'last' => 2));
  • last Igual que el anterior para las últimas.

  • ellipsis texto para la elipsis, por defecto ‘…’

  • class Si queremos una clase especial para los números.

  • currentClass La clase para la página actual. Por defecto es current.

    Para poner enlaces directos tenemos varias funciones: next, first… veamos como usarlas:

prev($title = ‘<< Previous’, $options = array(), $disabledTitle = null, $disabledOptions = array())

next($title = ‘Next >>’, $options = array(), $disabledTitle = null, $disabledOptions = array())

Añaden un enlace a la página siguiente o a la anterior. El primer parámetro es el título. Los siguientes son:

  • $options (mixed) Las opciones del elemento (class, tag…)
  • $disabledTitle (string) – El título cuando el enlace está deshabilitado (por estar en la primera página, caso del prev, por estar en la última, caso del next).
  • $disabledOptions (mixed) – Las opciones del elemento (class, tag…) cuando está deshabilitado.

Ejemplos:

echo $this->Paginator->prev(
  ' << ' . __('Anterior'),
  array(),
  null,
  array('class' => 'prev disabled')
);

echo $this->Paginator->prev(__('Anterior'), array('tag' => 'li'));

Para poner enlaces a la primera y última página, además de las opciones de numbers, tenemos las siguientes funciones:

first($first = ‘<< first’, $options = array())

last($last = ‘last >>’, $options = array())

Con las siguientes opciones:

  • tag Tag que rodea al elemento
  • after Contenido después del enlace
  • separator Separador entre enlaces
  • ellipsis Texto para la elipse

Para poder ver un contador tenemos:

counter($options = array())

Con las siguientes opciones en el texto:

  • {:page} – Página actual.
  • {:pages} – Total de páginas.
  • {:current} – Registro actual.
  • {:count} – Total de registros.
  • {:start} – Primer registro que se muestra.
  • {:end} – Último registro que se muestra.

Ejemplo:

echo $this->Paginator->counter(
    'Página {:page} de {:pages}, mostrando {:current} registros de un total de {:count} , empezando en {:start}, acabando en {:end}'
);