آموزش  ایجاد صفحه بندی «Pagination»  شخصی سازی شده در لاراول

آموزش ایجاد صفحه بندی «Pagination» شخصی سازی شده در لاراول

لاراول (Laravel) یکی از فریم وورک های PHP می باشد که توسط  تیلور اوتول (Taylor Otwell)  بر پایه MVC ایجاد و از آن برای ساخت و توسعه ی اپلیکیشن های تحت وب استفاده می شود.شما در لاراول می توانید به راحتی و تنها با استفاده از تابع links() برای صفحات خود صفحه بندی ایجاد نمایید. اما...

لاراول (Laravel) یکی از فریم وورک های PHP می باشد که توسط  تیلور اوتول (Taylor Otwell)  بر پایه MVC ایجاد و از آن برای ساخت و توسعه ی اپلیکیشن های تحت وب استفاده می شود.

لاراول برای شما امکان ایجاد یک وبسایت را با سرعت بسیار بالا و بدون نیاز به دستکاری در کدهای اصلی آن فراهم آورده است. شما به راحتی می توانید بخش هایی همچون عضویت، احراز هویت، ورود کاربران، ارسال ایمیل و ... را ایجاد و در سیستم خود استفاده کنید.

یکی از بخش هایی که بدون شک در هر صفحه ای از وب سایت که کار نمایش آرشیو را بر عهده دارد صفحه بندی یا Pagiantion می باشد. 

شما در لاراول می توانید به راحتی و تنها با استفاده از تابع links() برای صفحات خود صفحه بندی ایجاد نمایید.

اما برخی اوقات شما می خواهید از یک قالب کاملا شخصی سازی شده استفاده کنید و علاوه بر آن می خواهید pagination وب سایت خود را مطابق دلخواه خود تغییر دهید.

لاراول برای این کار نیز دست شما را آزاد گذاشته و شما به راحتی می توانید صفحه بندی های کاملا شخصی سازی شده ایجاد نمایید.

برای ایجاد صفحه بندی های شخصی سازی شده ابتدا دستور زیر را در ترمینال خود اجرا نمایید:

php artisan vendor:publish --tag=laravel-pagination

پس از اجرای کامند بالا یک دایرکتوری به آدرس resources/views/vendor/pagination ایجاد خواهد شد.

شما در این دایرکتوری چند فایل مشاهده خواهد کرد که لاراول بصورت پیش فرض از فایل bootstrap-4.blade.php برای ایجاد صفحه بندی خود استفاده می کند.

حالا شما برای ایجاد یک صفحه بندی دلخواه و شخصی سازی شده می توانید یک فایل برای نمونه به اسم my_paginate.blade.php ایجاد نمایید.

شما میتوانید از کدهایی که در فایلهای پیش فرض pagination لاراول وجود دارد ( یعنی فایل های درون پوشه ی resources/views/vendor/pagination ) برای ایجاد صفحه بندی پیش فرض خود استفاده نمایید.

کدهای موجود در فایل bootstrap-4.blade.php در نسخه laravel 5.7.21 بصورت زیر می باشد:

@if ($paginator->hasPages())
    <ul class="pagination" role="navigation">
        {{-- 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="{{ $paginator->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="{{ $paginator->nextPageUrl() }}" 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>
@endif

 

همانگونه که متوجه شده اید برای ایجاد حلقه ی صفحه بندی میتوانید کدهای زیر را طبق دلخواه خود تغییر داده و در فایلی که میخواهید از آن به عنوان صفحه بندی دلخواه استفاده نمایید قرار دهید.

 

   @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

کدهای قرار گرفته بین شرط های $paginator->onFirstPage() و  $paginator->hasMorePages() نیز کار نمایش صفحه بعد و صفحه قبل را برای شما انجام می دهند.

 

حال هر کجا که قصد نمایش pagination دلخواه خود را دارد کافیست بصورت زیر اقدام نمایید:

 

برای نمونه ما می خواهیم لیستی از کاربران را نمایش و از صفحه بندی دلخواه خود استفاده نماییم، که کافیست بجای دستور $users->links() از دستور زیر استفاده نمایید:

{{ $users->links("pagination::my_paginate") }}

در کد بالا my_paginate اشاره به blade ایجاد شده در دایرکتوری resources/views/vendor/pagination دارد که کار نمایش صفحه بندی دلخواه شما را انجام خواهد داد.

 

شما می توانید از چندین فایل متفاوت برای ایجاد صفحه بندی های متفاوت برای بخش های مختلف وبسایت خود استفاده نمایید.

 

امیدوارم از این آموزش لذت برده باشید و در پروژه های خودتون از صفحه بندی های متفاوت استفاده نمایید.

 

در صورتی که سوالی دارید از بخش نظرات ارسال فرمایید.


دسته بندی ها:

لاراول

ارسال نظر

برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *

ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *

اگر نظری برای این مطلب ارسال شد از طریق ایمیل مرا اطلاع بده!
لسیت نظرات
هنوز برای این مطلب نظری ارسال نشده است!