Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

VTrace's avatar

Got Undefined variable $elements error when using Laravel Paginate Route package

Hi, I'm currently trying to prettify laravel pagination url using Laravel Paginate Route by @MichalOravec. It's an awesome package, but when I try to use custom paginate view, i got Undefined variable $elements error.

This is how my controller looks like:

public function index()
    {
        $limit = 1;
        $datas = Models::latest()->simplePaginate($limit);
        $count = $datas->count();
        $no = $limit * ($datas->currentPage() - 1);

        return view('index', compact(
            'datas',
            'count',
            'no'
        ));
    }

And this is how I render the pagination in my index blade:

{{ $sliders->onEachSide(1)->links('layouts.paginate') }}

And this is how my paginate blade looks like:

@if ($paginator->hasPages())
    <nav>
        <ul class="pagination">
            {{-- Previous Page Link --}}
            @if ($paginator->onFirstPage())
                <li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.previous')">
                    <span class="page-link" aria-hidden="true">&lsaquo;</span>
                </li>
            @else
                <li class="page-item">
                    <a class="page-link" href="{{ PaginateRoute::previousPageUrl() }}" rel="prev" aria-label="@lang('pagination.previous')">&lsaquo;</a>
                </li>
            @endif

            {{-- Pagination Elements --}}
            @foreach ($elements as $element)
                {{-- "Three Dots" Separator --}}
                @if (is_string($element))
                    <li class="page-item disabled" aria-disabled="true"><span class="page-link">{{ $element }}</span></li>
                @endif

                {{-- Array Of Links --}}
                @if (is_array($element))
                    @foreach ($element as $page => $url)
                        @if ($page == $paginator->currentPage())
                            <li class="page-item active" aria-current="page"><span class="page-link">{{ $page }}</span></li>
                        @else
                            <li class="page-item"><a class="page-link" href="{{ $url }}">{{ $page }}</a></li>
                        @endif
                    @endforeach
                @endif
            @endforeach

            {{-- Next Page Link --}}
            @if ($paginator->hasMorePages())
                <li class="page-item">
                    <a class="page-link" href="{{ PaginateRoute::nextPageUrl($paginator) }}" rel="next" aria-label="@lang('pagination.next')">&rsaquo;</a>
                </li>
            @else
                <li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.next')">
                    <span class="page-link" aria-hidden="true">&rsaquo;</span>
                </li>
            @endif
        </ul>
    </nav>
@endif

I'm trying to follow @MichalOravec but got the error I mentioned above.

Is there any solution for this?

Ps: This is my first thread, sorry for my bad writing v('_')

0 likes
2 replies
MichalOravec's avatar

You are using simplePaginate. There are no numbers of pages.

Use a classic paginate, or remove a whole foreach with $elements in your layouts.paginate blade file.

1 like

Please or to participate in this conversation.