miércoles, 2 de diciembre de 2015

19 - Tutorial de Laravel 5 - paginate y simplePaginate (Paginación de resultados)




En este capítulo del Tutorial de Laravel 5 veremos como incluir una paginación de resultados haciendo uso de los métodos paginate y simplePaginate que nos ofrece laravel por defecto.

En el vídeo se hace una mención respecto al formulario de búsqueda del capítulo anterior para mostrar el valor de la búsqueda en el campo de texto. Esta modificación es realizada en el layout "home" ...


<input type="text" class="form-control" name='search' placeholder="Buscar ..." value='@yield("search")' />


Y en la vista "search", es decir, donde se muestran los resultados de la búsqueda, damos valor a la variable "search" creada con @yield ...

@section('search', $search)


La paginación de resultados será mostrada en la página de inicio "home", en la cual estamos mostrando los comentarios realizados por los usuarios autenticados. Más información en la documentación oficial de Laravel.

Primero veremos un ejemplo con el método "paginate", para ello simplemente modificar en la vista "home" lo siguiente ...

$comments = App\Comments::select()->orderBy('id', 'desc')->get();


Por esto otro ...

$comments = App\Comments::select()->orderBy('id', 'desc')->paginate(5);


Como podéis ver sólo hemos modificado el método get por paginate(número de registros por página).

Y a continuación, justo después de donde se cierra el búcle foreach para extraer comentario a comentario, incluimos los links de páginación ...

        <div class='text-center'>
        <?php echo $comments->render() ?>
           <p>Página {{$comments->currentPage()}} de {{$comments->lastPage()}}</p>
        </div>
        <br /><br /><br /><br />


Con el método render() mostramos los links y los métodos currentPage() y lastPage() forman parte de una serie de Helpers que nos proporciona laravel para obtener información de la paginación.

La otra demostración que se ve en el vídeo es el uso del método simplePaginate, esta paginación no muestra la numeración de las páginas y sólo muestra los botones para avanzar y retroceder.

Para ver este ejemplo seguiremos el mismo procedimiento que antes, cambiar el método paginate por simplePaginate y donde mostramos los links quitamos el helper lastPage, ya que este helper no esta disponible para simplePaginate.