Estoy empezando a crear un sitio de anuncios, muestro 36 imágenes de productos en un índice de hoja con éxito, pero cuando intento agregar la paginación, aparece este error Call to a member function lastPage() on int.

AnnoncesController.php

public function index()
{
        $categories     = Category::all();
        $annonces       = Annonce::paginate(36);
        $paginator      = 36;
        return view('landing-page')->with([
            'categories'     => $categories,
            'annonces'       => $annonces,
            'paginator'      => $paginator
        ]);
}

landing-page.blade.php

<div class="pagination pagination-sm pull-right">
                        @if($annonces->hasPages())
                            {{ $annonces->links() }}
                        @endif
                        </div>
                        @if ($paginator->lastPage() > 1)
                            <ul class="pagination">
                                @if(($paginator->currentPage() > 1))
                                    <li class="{{ ($paginator->currentPage() == 1) ? '' : '' }}">
                                        <a href="{{ $paginator->url(1) }}"> << </a>
                                    </li>
                                @endif
                                @for ($i = 1; $i <= $paginator->lastPage(); $i++)
                                    <li class="{{ ($paginator->currentPage() == $i) ? 'current' : '' }}">
                                        <a href="{{ $paginator->url($i) }}">{{ $i }}</a>
                                    </li>
                                @endfor
                                @if(($paginator->currentPage() != $paginator->lastPage()))
                                    <li class="{{ ($paginator->currentPage() == 1) ? '' : '' }}">
                                        <a href="{{ $paginator->url($paginator->currentPage()+1) }}"> >> </a>
                                    </li>
                                @endif
                            </ul>
                            @endif   
0
Hajar Lamine 30 ago. 2020 a las 19:18

1 respuesta

La mejor respuesta

Estás llamando a $paginator->lastPage(); y $paginator es un número entero, debería ser $annonces->lastPage();

Y esta sección debe ser

 @if ($annonces->lastPage() > 1)
    <ul class="pagination">
        @if(($annonces->currentPage() > 1))
            <li class="{{ ($annonces->currentPage() == 1) ? '' : '' }}">
                <a href="{{ $annonces->url(1) }}"> << </a>
            </li>
        @endif
        @for ($i = 1; $i <= $annonces->lastPage(); $i++)
            <li class="{{ ($annonces->currentPage() == $i) ? 'current' : '' }}">
                <a href="{{ $annonces->url($i) }}">{{ $i }}</a>
            </li>
        @endfor
        @if(($annonces->currentPage() != $annonces->lastPage()))
            <li class="{{ ($annonces->currentPage() == 1) ? '' : '' }}">
                <a href="{{ $annonces->url($annonces->currentPage()+1) }}"> >> </a>
            </li>
        @endif
    </ul>
@endif
0
mmabdelgawad 30 ago. 2020 a las 16:21