php - paginacion - ¿Cómo usar la paginación en laravel 5?
paginate array laravel (5)
Estoy tratando de portar mi aplicación laravel4 a laravel 5. En la versión anterior, podría usar el siguiente método para generar URL de paginación.
En el controlador :
$this->data[''pages'']= Page::whereIn(''area_id'', $suburbs)->where(''score'',''>'',''0'')->orderBy(''score'',''desc'')->paginate(12);
y después de compartir la matriz de datos con la vista, pude usar
En vistas :
{{$pages->links()}}
En laravel 5, el hacer eso da como resultado un error de seguimiento
ErrorException in AbstractPaginator.php line 445:
call_user_func_array() expects parameter 1 to be a valid callback, class ''Illuminate/Support/Collection'' does not have a method ''links''
no estoy seguro de lo que me falta aquí, ¿alguien puede ayudar?
En Laravel 5 no hay ningún método de "enlaces", puedes probar esto
{!! $pages->render() !!}
En otros marcos, la paginación puede ser muy dolorosa. Laravel 5 hace que sea una brisa. Para usarlo, primero tiene que hacer un cambio en el código de su controlador cuando llama datos desde la base de datos:
public function index()
{
$users = DB::table(''books'')->simplePaginate(5);
//using pagination method
return view(''index'', [''users'' => $users]);
}
... después de eso puedes usar este código:
<?php echo $users->render(); ?>
Eso te hará usar la belleza simple de Laravel 5.
Hola, está mi código para la paginación: uso a la vista:
@include (''pagination.default'', [''paginator'' => $ users])
Vistas / paginación / default.blade.php
@if ($paginator->lastPage() > 1)
<ul class="pagination">
<!-- si la pagina actual es distinto a 1 y hay mas de 5 hojas muestro el boton de 1era hoja -->
<!-- if actual page is not equals 1, and there is more than 5 pages then I show first page button -->
@if ($paginator->currentPage() != 1 && $paginator->lastPage() >= 5)
<li>
<a href="{{ $paginator->url($paginator->url(1)) }}" >
<<
</a>
</li>
@endif
<!-- si la pagina actual es distinto a 1 muestra el boton de atras -->
@if($paginator->currentPage() != 1)
<li>
<a href="{{ $paginator->url($paginator->currentPage()-1) }}" >
<
</a>
</li>
@endif
<!-- dibuja las hojas... Tomando un rango de 5 hojas, siempre que puede muestra 2 hojas hacia atras y 2 hacia adelante -->
<!-- I draw the pages... I show 2 pages back and 2 pages forward -->
@for($i = max($paginator->currentPage()-2, 1); $i <= min(max($paginator->currentPage()-2, 1)+4,$paginator->lastPage()); $i++)
<li class="{{ ($paginator->currentPage() == $i) ? '' active'' : '''' }}">
<a href="{{ $paginator->url($i) }}">{{ $i }}</a>
</li>
@endfor
<!-- si la pagina actual es distinto a la ultima muestra el boton de adelante -->
<!-- if actual page is not equal last page then I show the forward button-->
@if ($paginator->currentPage() != $paginator->lastPage())
<li>
<a href="{{ $paginator->url($paginator->currentPage()+1) }}" >
>
</a>
</li>
@endif
<!-- si la pagina actual es distinto a la ultima y hay mas de 5 hojas muestra el boton de ultima hoja -->
<!-- if actual page is not equal last page, and there is more than 5 pages then I show last page button -->
@if ($paginator->currentPage() != $paginator->lastPage() && $paginator->lastPage() >= 5)
<li>
<a href="{{ $paginator->url($paginator->lastPage()) }}" >
>>
</a>
</li>
@endif
</ul>
@endif
Pagination Laravel 5.6.26, para la paginación del controlador son:
Código de controlador ( https://laravel.com/docs/5.6/pagination#basic-usage )
posts = Post::orderBy(''created_at'',''desc'')->paginate(10);
return view(''posts.index'')->with(''posts'', $posts);
Parte frontal en la hoja (ver) ( https://laravel.com/docs/5.6/pagination#displaying-pagination-results )
{{ $users->links() }}
@if ($posts->lastPage() > 1)
<nav aria-label="Page navigation">
<ul class="pagination">
@if($posts->currentPage() != 1 && $posts->lastPage() >= 5)
<li>
<a href="{{ $posts->url($posts->url(1)) }}" aria-label="Previous">
<span aria-hidden="true">First</span>
</a>
</li>
@endif
@if($posts->currentPage() != 1)
<li>
<a href="{{ $posts->url($posts->currentPage()-1) }}" aria-label="Previous">
<span aria-hidden="true"><</span>
</a>
</li>
@endif
@for($i = max($posts->currentPage()-2, 1); $i <= min(max($posts->currentPage()-2, 1)+4,$posts->lastPage()); $i++)
@if($posts->currentPage() == $i)
<li class="active">
@else
<li>
@endif
<a href="{{ $posts->url($i) }}">{{ $i }}</a>
</li>
@endfor
@if ($posts->currentPage() != $posts->lastPage())
<li>
<a href="{{ $posts->url($posts->currentPage()+1) }}" aria-label="Next">
<span aria-hidden="true">></span>
</a>
</li>
@endif
@if ($posts->currentPage() != $posts->lastPage() && $posts->lastPage() >= 5)
<li>
<a href="{{ $posts->url($posts->lastPage()) }}" aria-label="Next">
<span aria-hidden="true">Last</span>
</a>
</li>
@endif
</ul>
</nav>
@endif