En esta parte del Tutorial de Laravel 5 continuamos viendo la paginación, concretamente utilizaremos los helpers para crear una paginación personalizada.
Esta paginación tendrá el siguiente formato:
Previamente incluiremos el método setPath a la paginación con la cual trabajamos en el capítulo anterior, este método nos permitirá generar las rutas para los links correctamente. Código modificado en la vista "home" ...
<div class='text-center'> <?php /*Nuevo*/ $comments->setPath('') ?> <?php echo $comments->render() ?> <p>Página {{$comments->currentPage()}}</p> </div> <br /><br /><br /><br />
Empezamos a crear la paginación personalizada. En la acción search del controlador HomeController reemplazamos el método get de la consulta por el método paginate:
$comments = Comments::select() ->where('comment', 'LIKE', '%'.$search.'%') ->orderBy('id', 'desc') ->paginate(3);
En la vista "search" utilizamos los helpers para crear una serie de variables, que posteriormente nos serviran para crear los links de la paginación, código completo de la vista "search" ...
@extends('layouts.home') @section('search', $search) @section('content') <h3>Resultado de la búsqueda: {{$search}}</h3> @if (isset($message)) <div class='bg-warning' style='padding: 20px'> {{$message}} </div> @endif <hr /> @if (isset($comments)) <?php $modal = 0; foreach($comments as $comment): $user = App\User::select()->where('id', '=', $comment->id_user)->first(); ?> <div class="row"> <div class="col-md-1"> <img src='{{url($user->perfiles)}}' class='img-responsive' style='max-width: 60px' /> <strong>{{$user->name}}</strong> </div> <div class='col-md-6'> {{$comment->comment}} <br /> <i>Fecha: {{$comment->date}} · Hora: {{$comment->time}}</i> @if(isset(Auth::user()->id)) @if($comment->id_user == Auth::user()->id) <hr /> <!-- Botón que abre la ventana modal eliminar --> <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#deleteComment{{$modal}}"> Eliminar </button> <!-- Ventana modal para eliminar --> <div class="modal fade" id="deleteComment{{$modal}}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title" id="myModalLabel">¿Realmente quieres eliminar este comentario?</h4> </div> <div class="modal-body"> <form method="post" action="{{url('user/deletecomment')}}"> {{csrf_field()}} <input type="hidden" name="id_comment" value="{{$comment->id}}" /> <button type="submit" class="btn btn-danger">Eliminar</button> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button> </div> </div> </div> </div> <!-- Botón para abrir la ventana modal de editar --> <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#editComment{{$modal}}"> Editar </button> <!-- Ventana modal editar --> <div class="modal fade" id="editComment{{$modal}}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title" id="myModalLabel">Editar comentario</h4> </div> <div class="modal-body"> <form method="post" action="{{url('user/editcomment')}}"> {{csrf_field()}} <div class="form-group"> <textarea name="comment" rows="10" class="form-control">{{$comment->comment}}</textarea> </div> <input type="hidden" name="id_comment" value="{{$comment->id}}" /> <button type="submit" class="btn btn-primary">Editar</button> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button> </div> </div> </div> </div> <?php $modal++ ?> @endif @endif </div> </div> <hr /> <?php endforeach ?> <?php $currentPage = $comments->currentPage(); //Página actual $maxPages = $currentPage + 3; //Máxima numeración de páginas $firstPage = 1; //primera página $lastPage = $comments->lastPage(); //última página $nextPage = $currentPage+1; //Siguiente página $forwardPage = $currentPage-1; //Página anterior $comments->setPath(''); ?> <ul class="pagination"> <!-- Botón para navegar a la primera página --> <li class="@if($currentPage==$firstPage){{'disabled'}}@endif"> <a href="@if($currentPage>1){{$comments->url($firstPage)}}@else{{'#'}}@endif" class='btn'>Primera</a> </li> <!-- Botón para navegar a la página anterior --> <li class="@if($currentPage==$firstPage){{'disabled'}}@endif"> <a href="@if($currentPage>1){{$comments->url($forwardPage)}}@else{{'#'}}@endif" class='btn'>«</a> </li> <!-- Mostrar la numeración de páginas, partiendo de la página actual hasta el máximo definido en $maxPages --> @for($x=$currentPage;$x<$maxPages;$x++) @if($x <= $lastPage) <li class="@if($x==$currentPage){{'active'}}@endif"> <a href="{{$comments->url($x)}}" class='btn'>{{$x}}</a> </li> @endif @endfor <!-- Botón para navegar a la pagina siguiente --> <li class="@if($currentPage==$lastPage){{'disabled'}}@endif"> <a href="@if($currentPage<$lastPage){{$comments->url($nextPage)}}@else{{'#'}}@endif" class='btn'>»</a> </li> <!-- Botón para navegar a la última página --> <li class="@if($currentPage==$lastPage){{'disabled'}}@endif"> <a href="@if($currentPage<$lastPage){{$comments->url($lastPage)}}@else{{'#'}}@endif" class='btn'>Última</a> </li> </ul> @endif @stop
Ahora prueben la páginación al realizar búsquedas.
No hay comentarios:
Publicar un comentario