Laravel : Pretty Pagination URLs

 

Laravel verwendet für die Pagination URL Out of the box GET-Variablen: ?page=1. Damit aus ?page=1 sowas wie /page/1 wird, konnte ich seitens Laravel keine Lösung finden. Damit ich bei zukünftigen Updates möglichst wenig Probleme habe, verwende ich die Laravel-Pagination mit einer minimalen Übersteuerung: Mit einer zusätzlichen Route, einer Variable die aus der Route die Seitennummer übersteuert und in den Blade-Templates String-Replaces die die Standard-Funktion für das Rendern entsprechend anpassen.

ZjZgAu27GykP3l1sYDbxySU3p9VbkMyRew65WJe5.png

in routes\web.php

bei z.B. folgender Route 

<span style="font-size: 14.4px;">Route::get('topic/{topic}', 'TopicController@index')->name('topic');</span><span style="font-size: .9rem;"><br /></span>

zusätzlich eine Zeile für die Pagination:

<span style="font-size: 14.4px;">Route::get('topic/{topic}/page/{page}', 'TopicController@index');
Route::get('topic/{topic}', 'TopicController@index');</span><span style="font-size: .9rem;"><br /></span>

Im Controller

    public function show($slug,$page=1)
    {   //Set the current page:
        \Illuminate\Pagination\Paginator::currentPageResolver(function () use ($page) {
        return $page;
        });
        ...

Ab diesem Zeitpunkt können zusätzliche Seiten bereits über die neuen Links aufgerufen werden:

/page/2

In den Blade-Templates können die Links dann wie folgt angepasst werden:

{!! str_replace("?page=", "/page/",preg_replace("@/page/([0-9]+)@","",str_replace("?page=1\"", "\"",$stories->render()))) !!}	
positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!

Beitrag erstellt von Bernhard | Aktualisiert: 26.05.2020 | |🔔 | Kommentare:0

Fragen / Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details