Laravel 4.2 hat die Möglichkeit, eine benutzerdefinierte Ansicht in app/config/view.php
anzugeben, z.
/*
|--------------------------------------------------------------------------
| Pagination View
|--------------------------------------------------------------------------
|
| This view will be used to render the pagination link output, and can
| be easily customized here to show any view you like. A clean view
| compatible with Twitter's Bootstrap is given to you by default.
|
*/
'pagination' => 'pagination_slider-alt'
Dies ist in Laravel 5 zumindest in Bezug auf view.php
gegangen.
Gibt es eine Möglichkeit, dieses Verhalten in Laravel 5 zu replizieren?
In Laravel 4.2würde ich Folgendes verwenden:
{{ $users->links('view.name') }}
In Laravel 5 können Sie das Obige mit folgendem kopieren:
@include('view.name', ['object' => $users])
In der eingebundenen Ansicht stehen für $object
jetzt die Paginierungsmethoden zur Verfügung, wie currentPage()
, lastPage()
, perPage()
usw.
Sie können alle verfügbaren Methoden unter http://laravel.com/docs/5.0/pagination anzeigen.
In Laravel 5.3+ verwenden
$users->links('view.name')
In Laravel 5.0 - 5.2 statt
$users->render()
benutzen
@include('pagination.default', ['paginator' => $users])
views/pagination/default.blade.php
@if ($paginator->lastPage() > 1)
<ul class="pagination">
<li class="{{ ($paginator->currentPage() == 1) ? ' disabled' : '' }}">
<a href="{{ $paginator->url(1) }}">Previous</a>
</li>
@for ($i = 1; $i <= $paginator->lastPage(); $i++)
<li class="{{ ($paginator->currentPage() == $i) ? ' active' : '' }}">
<a href="{{ $paginator->url($i) }}">{{ $i }}</a>
</li>
@endfor
<li class="{{ ($paginator->currentPage() == $paginator->lastPage()) ? ' disabled' : '' }}">
<a href="{{ $paginator->url($paginator->currentPage()+1) }}" >Next</a>
</li>
</ul>
@endif
Das ist es.
Wenn Sie viele Seiten haben, verwenden Sie diese Vorlage:
views/pagination/limit_links.blade.php
<?php
// config
$link_limit = 7; // maximum number of links (a little bit inaccurate, but will be ok for now)
?>
@if ($paginator->lastPage() > 1)
<ul class="pagination">
<li class="{{ ($paginator->currentPage() == 1) ? ' disabled' : '' }}">
<a href="{{ $paginator->url(1) }}">First</a>
</li>
@for ($i = 1; $i <= $paginator->lastPage(); $i++)
<?php
$half_total_links = floor($link_limit / 2);
$from = $paginator->currentPage() - $half_total_links;
$to = $paginator->currentPage() + $half_total_links;
if ($paginator->currentPage() < $half_total_links) {
$to += $half_total_links - $paginator->currentPage();
}
if ($paginator->lastPage() - $paginator->currentPage() < $half_total_links) {
$from -= $half_total_links - ($paginator->lastPage() - $paginator->currentPage()) - 1;
}
?>
@if ($from < $i && $i < $to)
<li class="{{ ($paginator->currentPage() == $i) ? ' active' : '' }}">
<a href="{{ $paginator->url($i) }}">{{ $i }}</a>
</li>
@endif
@endfor
<li class="{{ ($paginator->currentPage() == $paginator->lastPage()) ? ' disabled' : '' }}">
<a href="{{ $paginator->url($paginator->lastPage()) }}">Last</a>
</li>
</ul>
@endif
In Laravel 5 basiert die benutzerdefinierte Paginierung auf Präsentatoren (Klassen) anstelle von Ansichten.
Angenommen, Sie haben Ihren Routing-Code
$users = Users::paginate(15);
In L4 haben Sie in Ihren Ansichten so etwas gemacht:
$users->appends(['sort' => 'votes'])->links();
In L5 machen Sie stattdessen:
$users->appends(['sort' => 'votes'])->render();
Die render()
-Methode akzeptiert eine Illuminate\Contracts\Pagination\Presenter
-Instanz. Sie können eine benutzerdefinierte Klasse erstellen, die diesen Vertrag implementiert, und an die render()
-Methode übergeben. Beachten Sie, dass Presenter
eine interface ist, keine Klasse. Daher müssen Sie implementieren, nicht erweitern. Deshalb erhalten Sie den Fehler.
Alternativ können Sie den Laravel-Paginator erweitern (um seine Paginierungslogik zu verwenden) und dann die vorhandene Paginierungsinstanz ($users->...
) an Ihren erweiterten Klassenkonstruktor übergeben. Dies ist in der Tat das, was ich getan habe, um meinen benutzerdefinierten Zurb Foundation Presenter basierend auf dem Bootstrap-Presenter von Laravel zu erstellen. Es verwendet die gesamte Laravel-Paginierungslogik und überschreibt nur die Rendering-Methoden.
Bei meinem benutzerdefinierten Moderator sehen meine Ansichten so aus:
with(new \Stolz\Laravel\Pagination($users->appends(['sort' => 'votes'])))->render();
Und mein maßgeschneiderter Seitenpräsentator ist:
<?php namespace Stolz\Laravel;
use Illuminate\Pagination\BootstrapThreePresenter;
class Pagination extends BootstrapThreePresenter
{
/**
* Convert the URL window into Zurb Foundation HTML.
*
* @return string
*/
public function render()
{
if( ! $this->hasPages())
return '';
return sprintf(
'<ul class="pagination" aria-label="Pagination">%s %s %s</ul></div>',
$this->getPreviousButton(),
$this->getLinks(),
$this->getNextButton()
);
}
/**
* Get HTML wrapper for disabled text.
*
* @param string $text
* @return string
*/
protected function getDisabledTextWrapper($text)
{
return '<li class="unavailable" aria-disabled="true"><a href="javascript:void(0)">'.$text.'</a></li>';
}
/**
* Get HTML wrapper for active text.
*
* @param string $text
* @return string
*/
protected function getActivePageWrapper($text)
{
return '<li class="current"><a href="javascript:void(0)">'.$text.'</a></li>';
}
/**
* Get a pagination "dot" element.
*
* @return string
*/
protected function getDots()
{
return $this->getDisabledTextWrapper('…');
}
}
Fügen Sie für Laravel 5.3 (und möglicherweise in anderen 5.X-Versionen) einen benutzerdefinierten Seitenumbruchcode in den Ansichtsordner ein.
resources/views/pagination/default.blade.php
@if ($paginator->hasPages())
<ul class="pagination">
{{-- Previous Page Link --}}
@if ($paginator->onFirstPage())
<li class="disabled"><span>«</span></li>
@else
<li><a href="{{ $paginator->previousPageUrl() }}" rel="prev">«</a></li>
@endif
{{-- Pagination Elements --}}
@foreach ($elements as $element)
{{-- "Three Dots" Separator --}}
@if (is_string($element))
<li class="disabled"><span>{{ $element }}</span></li>
@endif
{{-- Array Of Links --}}
@if (is_array($element))
@foreach ($element as $page => $url)
@if ($page == $paginator->currentPage())
<li class="active"><span>{{ $page }}</span></li>
@else
<li><a href="{{ $url }}">{{ $page }}</a></li>
@endif
@endforeach
@endif
@endforeach
{{-- Next Page Link --}}
@if ($paginator->hasMorePages())
<li><a href="{{ $paginator->nextPageUrl() }}" rel="next">»</a></li>
@else
<li class="disabled"><span>»</span></li>
@endif
</ul>
@endif
rufen Sie dann diese Paginierungsansicht-Datei aus der Hauptansicht-Datei als auf
{{ $posts->links('pagination.default') }}
Aktualisieren Sie pagination/default.blade.php wie gewünscht
In 5.5
Wird links()
durch render()
ersetzt, was anscheinend ähnlich funktioniert. [Official DOC]
ersetzen
{{ $replies->links() }}
mit
{{ $replies->render("pagination::default") }}
Die folgenden Befehle erzeugen eine Paginierungsvorlage in resources/views/vendor/pagination
artisan vendor:publish --tag=laravel-pagination
artisan vendor:publish
In jeder Ansichtsdatei (Blade-Dateien) können Sie diese Vorlagen wie folgt verwenden:
{{ $replies->render("pagination::default") }}
{{ $replies->render("pagination::bootstrap-4") }}
{{ $replies->render("pagination::simple-bootstrap-4") }}
{{ $replies->render("pagination::semantic-ui") }}
Laravel 5 wird mit einem Bootstrap 4-Paginator ausgeliefert, wenn er benötigt wird.
Erstellen Sie zuerst einen neuen Dienstanbieter.
php artisan make:provider PaginationServiceProvider
Übergeben Sie in der Methode register
eine Schließung an die Paginator-Klasse von Laravel, die den neuen Presenter erstellt und zurückgibt.
<?php
namespace App\Providers;
use Illuminate\Pagination\BootstrapFourPresenter;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\ServiceProvider;
class PaginationServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
Paginator::presenter(function($paginator)
{
return new BootstrapFourPresenter($paginator);
});
}
}
Registrieren Sie den neuen Anbieter in config/app.php
'providers' => [
//....
App\Providers\PaginationServiceProvider::class,
]
Ich habe dieses Beispiel bei Bootstrap 4 Pagination With Laravel gefunden.
Vielleicht ist es zu spät, aber ich möchte eine andere benutzerdefinierte Seitenumbruchvorlage freigeben, die einen ersten/nächsten und letzten/vorherigen Link erstellt. Außerdem werden die Links ausgeblendet, wenn sich der Benutzer bereits auf der ersten/letzten Seite befindet.
(Optional) Sie können auch das Intervall der Links festlegen (Anzahl der Links vor und nach der aktuellen Seite).
Anwendungsbeispiel:
@include('pagination', ['paginator' => $users])
oder
@include('pagination', ['paginator' => $users, 'interval' => 5])
Hier ist der Gist: https://Gist.github.com/xxnoobmanxx/33f6082d009c20f77499252b89c35dea
Und der Code:
@if (isset($paginator) && $paginator->lastPage() > 1)
<ul class="pagination">
<?php
$interval = isset($interval) ? abs(intval($interval)) : 3 ;
$from = $paginator->currentPage() - $interval;
if($from < 1){
$from = 1;
}
$to = $paginator->currentPage() + $interval;
if($to > $paginator->lastPage()){
$to = $paginator->lastPage();
}
?>
<!-- first/previous -->
@if($paginator->currentPage() > 1)
<li>
<a href="{{ $paginator->url(1) }}" aria-label="First">
<span aria-hidden="true">«</span>
</a>
</li>
<li>
<a href="{{ $paginator->url($paginator->currentPage() - 1) }}" aria-label="Previous">
<span aria-hidden="true">‹</span>
</a>
</li>
@endif
<!-- links -->
@for($i = $from; $i <= $to; $i++)
<?php
$isCurrentPage = $paginator->currentPage() == $i;
?>
<li class="{{ $isCurrentPage ? 'active' : '' }}">
<a href="{{ !$isCurrentPage ? $paginator->url($i) : '#' }}">
{{ $i }}
</a>
</li>
@endfor
<!-- next/last -->
@if($paginator->currentPage() < $paginator->lastPage())
<li>
<a href="{{ $paginator->url($paginator->currentPage() + 1) }}" aria-label="Next">
<span aria-hidden="true">›</span>
</a>
</li>
<li>
<a href="{{ $paginator->url($paginator->lastpage()) }}" aria-label="Last">
<span aria-hidden="true">»</span>
</a>
</li>
@endif
</ul>
@endif
Laravel 5.2 verwendet dafür Präsentatoren. Sie können benutzerdefinierte Präsentatoren erstellen oder die vordefinierten verwenden. Laravel 5.2 verwendet die BootstrapThreePrensenter
-Voreinstellung, es ist jedoch einfach, die BootstrapFroutPresenter
oder andere benutzerdefinierte Präsentatoren für diese Angelegenheit zu verwenden.
public function index()
{
return view('pages.guestbook',['entries'=>GuestbookEntry::paginate(25)]);
}
In Ihrer Blade-Vorlage können Sie die folgende Formel verwenden:
{!! $entries->render(new \Illuminate\Pagination\BootstrapFourPresenter($entries)) !!}
Zum Erstellen von benutzerdefinierten Moderatoren empfehle ich mir das das Video von Codecourse .
wenn Sie das Erscheinungsbild Ihrer Paginierung verschönern möchten, verwende ich die Klasse von bootstrap, um sie einfacher und einfacher zu gestalten
@if ($students->lastPage() > 1)
<ul class="pagination ml-auto">
<li class="{{ ($students->currentPage() == 1) ? ' disabled' : '' }} page-item">
<a class=" page-link " href="{{ $students->url(1) }}" aria-label="Previous">
<span aria-hidden="true">«</span>
<span class="sr-only">Previous</span>
</a>
</li>
@for ($i = 1; $i <= $students->lastPage(); $i++)
<li class="{{ ($students->currentPage() == $i) ? ' active' : '' }} page-item">
<a class=" page-link " href="{{ $students->url($i) }}">{{ $i }}</a>
</li>
@endfor
<li class="{{ ($students->currentPage() == $students->lastPage()) ? ' disabled' : '' }} page-item">
<a href="{{ $students->url($students->currentPage()+1) }}" class="page-link" aria-label="Next">
<span aria-hidden="true">»</span>
<span class="sr-only">Next</span>
</a>
</li>
</ul>
@endif
Platzieren Sie einfach das folgende Skript in Ihrer Seite:
<script>
$('.pagination li').addClass('page-item');
$('.pagination li a').addClass('page-link');
$('.pagination span').addClass('page-link');
</script>
Vorteile: spart Server-CPU, erfordert keine Anpassungen in Ihrer App.
neben der Antwort von @MantasD möchte ich eine umfassende, maßgeschneiderte Laravel-Paginierung anbieten. Angenommen, Sie verwenden Laravel 5.2 und die folgende eingeschlossene Ansicht:
@include('pagination.default', ['pager' => $users])
Eigenschaften
default.blade.php
@if($pager->lastPage() != 1)
<ul class="pagination">
@unless($pager->currentPage() < 3)
<li class="paginate_button previous">
<a href="{{ $pager->url(1) }}" title="First Page"><i class="fa fa-angle-double-left"></i></a>
</li>
@endunless
<li class="paginate_button previous @unless($pager->previousPageUrl())disabled @endunless">
<a href="{{ $pager->previousPageUrl() }}"><i class="fa fa-angle-left"></i></a>
</li>
@while($pager->paging++ < $pager->lastPage())
@if (abs($pager->paging - $pager->currentPage()) >= 2)
{{-- Generate relative links (eg. +10,etc) --}}
@if(in_array(abs($pager->paging - $pager->currentPage()), array(10, 50, 100, 500, 1000))
and $pager->paging != 1 and $pager->paging != $pager->lastPage())
<li class="paginate_button @unless($pager->currentPage() != $pager->paging)active @endunless">
<a title="Results from {{ PaginationStartEnd($pager->paging, $pager->perPage(), $pager->total())['start'] }} to {{ PaginationStartEnd($pager->paging, $pager->perPage(), $pager->total())['end'] }} of {{ $pager->total() }}" href="{{ $pager->url($pager->paging) }}">
<!-- + {{ $pager->paging - $pager->currentPage() }} -->{{ $pager->paging }}
</a>
</li>
@endif
@else
<li class="paginate_button @unless($pager->currentPage() != $pager->paging)active @endunless">
<a title="Results from {{ PaginationStartEnd($pager->paging, $pager->perPage(), $pager->total())['start'] }} to {{ PaginationStartEnd($pager->paging, $pager->perPage(), $pager->total())['end'] }} of {{ $pager->total() }}" href="{{ $pager->url($pager->paging) }}">
{{ $pager->paging }}
</a>
</li>
@endif
@endwhile
<li class="paginate_button next @unless($pager->nextPageUrl())disabled @endunless">
<a href="{{ $pager->nextPageUrl() }}"><i class="fa fa-angle-right"></i></a>
</li>
@unless($pager->lastPage() - $pager->currentPage() < 2)
<li class="paginate_button next">
<a href="{{ $pager->url($pager->lastPage()) }}" title="Last Page"><i class="fa fa-angle-double-right"></i></a>
</li>
@endunless
</ul>
@endif
PaginationStartEnd-Funktion
if (!function_exists('PaginationStartEnd')) {
function PaginationStartEnd($currentPage, $perPage, $total)
{
$pageStart = number_format( $perPage * ($currentPage - 1));
$pageEnd = $pageStart + $perPage;
if ($pageEnd > $total)
$pageEnd = $total;
$pageStart++;
return array('start' => number_format($pageStart), 'end' => number_format($pageEnd));
}
}
Sie können dies beliebig verwenden und anpassen.
Hinweis: $ pager-> paging ist in der Controller-Aktion deklariert
Hier ist eine für Laravel 5, Bootstrap 4 und ohne Blade-Syntax (für diejenigen, die unendlich schwieriger lesen ).
Zu verwenden, anstatt:
{!! $users->render() !!}
Benutzen:
@include('partials/pagination', ['paginator' => $users])
Dabei ist partials/pagination
Ihre Blade-Vorlagendatei mit dem folgenden Inhalt.
// Number of links to show. Odd numbers work better
$linkCount = 7;
$pageCount = $paginator->lastPage();
if ($pageCount > 1)
{
$currentPage = $paginator->currentPage();
$pagesEitherWay = floor($linkCount / 2);
$paginationHtml = '<ul class="pagination">';
// Previous item
$previousDisabled = $currentPage == 1 ? 'disabled' : '';
$paginationHtml .= '<li class="page-item '.$previousDisabled.'">
<a class="page-link" href="'.$paginator->url($currentPage - 1).'" aria-label="Previous">
<span aria-hidden="true">«</span>
<span class="sr-only">Previous</span>
</a>
</li>';
// Set the first and last pages
$startPage = ($currentPage - $pagesEitherWay) < 1 ? 1 : $currentPage - $pagesEitherWay;
$endPage = ($currentPage + $pagesEitherWay) > $pageCount ? $pageCount : ($currentPage + $pagesEitherWay);
// Alter if the start is too close to the end of the list
if ($startPage > $pageCount - $linkCount)
{
$startPage = ($pageCount - $linkCount) + 1;
$endPage = $pageCount;
}
// Alter if the end is too close to the start of the list
if ($endPage <= $linkCount)
{
$startPage = 1;
$endPage = $linkCount < $pageCount ? $linkCount : $pageCount;
}
// Loop through and collect
for ($i = $startPage; $i <= $endPage; $i++)
{
$disabledClass = $i == $currentPage ? 'disabled' : '';
$paginationHtml .= '<li class="page-item '.$disabledClass.'">
<a class="page-link" href="'.$paginator->url($i).'">'.$i.'</a>
</li>';
}
// Next item
$nextDisabled = $currentPage == $pageCount ? 'disabled' : '';
$paginationHtml .= '<li class="page-item '.$nextDisabled.'">
<a class="page-link" href="'.$paginator->url($currentPage + 1).'" aria-label="Next">
<span aria-hidden="true">»</span>
<span class="sr-only">Next</span>
</a>
</li>';
$paginationHtml .= '</ul>';
echo $paginationHtml;
}
Hier ist eine einfache Lösung von benutzerdefinierten Laravel Paginierung sowohl Server-und Client-Code enthalten.
Angenommen, Sie verwenden Laravel 5.2 und die folgende eingeschlossene Ansicht:
@ include ('pagination.default', ['pager' => $ data]
Eigenschaften
default.blade.php
@if ($paginator->last_page > 1)
<ul class="pagination pg-blue">
<li class="page-item {{($paginator->current_page == 1)?'disabled':''}}">
<a class="page-link" tabindex="-1" href="{{ '/locate-vendor/'}}{{ substr($paginator->prev_page_url,7) }}">
Previous
</a>
</li>
<li class="page-item {{($paginator->current_page == 1)?'disabled':''}}">
<a class="page-link" tabindex="-1" href="{{ '/locate-vendor/1'}}">
First
</a>
</li>
@if ( $paginator->current_page > 5 )
<li class="page-item">
<a class="page-link" tabindex="-1">...</a>
</li>
@endif
@for ($i = 1; $i <= $paginator->last_page; $i++)
@if ( ($i > ($paginator->current_page - 5)) && ($i < ($paginator->current_page + 5)) )
<li class="page-item {{($paginator->current_page == $i)?'active':''}}">
<a class="page-link" href="{{'/locate-vendor/'}}{{$i}}">{{$i}}</a>
</li>
@endif
@endfor
@if ( $paginator->current_page < ($paginator->last_page - 4) )
<li class="page-item">
<a class="page-link" tabindex="-1">...</a>
</li>
@endif
<li class="page-item {{($paginator->current_page==$paginator->last_page)?'disabled':''}}">
<a class="page-link" href="{{'/locate-vendor/'}}{{$paginator->last_page}}">
Last
</a>
</li>
<li class="page-item {{($paginator->current_page==$paginator->last_page)?'disabled':''}}">
<a class="page-link" href="{{'/locate-vendor/'}}{{substr($paginator->next_page_url,7)}}">
Next
</a>
</li>
</ul>
@endif
Server Side Controller-Funktion
public function getVendors (Request $request)
{
$inputs = $request->except('token');
$perPage = (isset($inputs['per_page']) && $inputs['per_page']>0)?$inputs['per_page']:$this->perPage;
$currentPage = (isset($inputs['page']) && $inputs['page']>0)?$inputs['page']:$this->page;
$slice_init = ($currentPage == 1)?0:(($currentPage*$perPage)-$perPage);
$totalVendors = DB::table('client_broker')
->whereIn('client_broker_type_id', [1, 2])
->where('status_id', '1')
->whereNotNull('client_broker_company_name')
->whereNotNull('client_broker_email')
->select('client_broker_id', 'client_broker_company_name','client_broker_email')
->distinct()
->count();
$vendors = DB::table('client_broker')
->whereIn('client_broker_type_id', [1, 2])
->where('status_id', '1')
->whereNotNull('client_broker_company_name')
->whereNotNull('client_broker_email')
->select('client_broker_id', 'client_broker_company_name','client_broker_email')
->distinct()
->skip($slice_init)
->take($perPage)
->get();
$vendors = new LengthAwarePaginator($vendors, $totalVendors, $perPage, $currentPage);
if ($totalVendors) {
$response = ['status' => 1, 'totalVendors' => $totalVendors, 'pageLimit'=>$perPage, 'data' => $vendors, 'Message' => 'Vendors Details Found.'];
} else {
$response = ['status' => 0, 'totalVendors' => 0, 'data' => [], 'pageLimit'=>'', 'Message' => 'Vendors Details not Found.'];
}
return response()->json($response, 200);
}
In Laravel 5.4
Der einfachste Weg, den ich gefunden habe, indem ich sie mit dem Befehl resources/views/vendor
in Ihr vendor:publish
-Verzeichnis exportiere
php artisan vendor:publish --tag=laravel-pagination
und dann zu resources\views\vendor\pagination\default.blade.php
und machen Sie Ihre Anpassung dort.
Vollständige Dokumentation dazu finden Sie hier
Hallo, es gibt meinen Code für die Paginierung: In Blade verwenden @ Include ('pagination.default', ['paginator' => $ users])
Ansichten/pagination/default.blade.php
@if ($paginator->lastPage() > 1)
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) << @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>
Wenn Sie die Seitennummer in URL ändern möchten, anstatt Daten wie/pageNo abzurufen. zB: /2. Sie können Jquery verwenden, um die URL zu ändern. Ich habe einige Daten in get-Methode mit der URL.
$(function () {
$('.pagination li a').each(function () {
var link = $(this).attr('href');
var pageText = $(this).text();
var activePage = parseInt($('.pagination li.active span').text());
if (pageText.trim() == "«") {
pageText = activePage - 1;
} else if (pageText.trim() == "»") {
pageText = activePage + 1;
}
link = link.replace('?', '/' + pageText + '?');
link = link.replace('&page=' + pageText, '');
$(this).attr('href', link);
console.log(link);
});
})
Dank des Beitrags von MantisD hat dies für Bootstrap 4 gut funktioniert.
<?php
$link_limit = 7; // maximum number of links (a little bit inaccurate, but will be ok for now)
?>
@if ($paginator->lastPage() > 1)
<div id="news_paginate" class="dataTables_paginate paging_simple_numbers">
<ul class="pagination">
<li id="news_previous" class="paginate_button page-item previous {{ ($paginator->currentPage() == 1) ? ' disabled' : '' }}">
<a class="page-link" tabindex="0" href="{{ $paginator->url(1) }}">Previous</a>
</li>
@for ($i = 1; $i <= $paginator->lastPage(); $i++)
<?php
$half_total_links = floor($link_limit / 2);
$from = $paginator->currentPage() - $half_total_links;
$to = $paginator->currentPage() + $half_total_links;
if ($paginator->currentPage() < $half_total_links) {
$to += $half_total_links - $paginator->currentPage();
}
if ($paginator->lastPage() - $paginator->currentPage() < $half_total_links) {
$from -= $half_total_links - ($paginator->lastPage() - $paginator->currentPage()) - 1;
}
?>
@if ($from < $i && $i < $to)
<li class="paginate_button page-item {{ ($paginator->currentPage() == $i) ? ' active' : '' }}">
<a class="page-link" href="{{ $paginator->url($i) }}">{{ $i }}</a>
</li>
@endif
@endfor
<li id="news_next" class="paginate_button page-item {{ ($paginator->currentPage() == $paginator->lastPage()) ? ' disabled' : '' }}">
@if($paginator->currentPage() == $paginator->lastPage())
<a class="page-link" tabindex="0" href="{{ $paginator->url($paginator->currentPage()) }}" >End</a>
@else
<a class="page-link" tabindex="0" href="{{ $paginator->url($paginator->currentPage()+1) }}" >Next</a>
@endif
</li>
</ul>
</div>
@endif
Ich verwende diesen Code mit einem k7-Design und verwende diesen Code mit seiner eingebauten Klasse . Sie können diesen Code auch mit Ihrem Design und Ihrer Klasse verwenden, wenn Sie dies benötigen.
versuch das zu tun.
<section class="page-paging pt-0">
<div class="container">
<div class="row">
<div class="col-12">
<nav aria-label="Page navigation example">
@if ($view_post->lastPage() > 1)
<ul class="pager list-inline mb-0 text-center">
<li class="{{ ($view_post->currentPage() == 1) ? ' disabled' : '' }}p-1 list-inline-item float-sm-left">
<a class="active page-link brd-gray px-4 py-3 font-weight-bold" href="{{ $view_post->url(1) }}">
<i class="fa fa-angle-left pr-1"></i> Prev
</a>
</li>
@for ($i = 1; $i <= $view_post->lastPage(); $i++)
<li class=" p-1 list-inline-item d-none d-md-inline-block">
<a class="{{ ($view_post->currentPage() == $i) ? ' active' : '' }} page-link brd-gray px-4 py-3 font-weight-bold" href="{{ $view_post->url($i) }}">{{ $i }}
</a>
</li>
@endfor
<li class="{{ ($view_post->currentPage() == $view_post->lastPage()) ? ' disabled' : '' }} p-1 list-inline-item float-sm-right">
<a class="active page-link brd-gray px-4 py-3 font-weight-bold" href="{{ $view_post->url($view_post->currentPage()+1) }}"> Next
<i class="fa fa-angle-right pl-1"></i>
</a>
</li>
</ul>
@endif
</nav>
</div>
</div>
</div>
</section>