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 

Route::get('topic/{topic}', 'TopicController@index')->name('topic');

zus√§tzlich eine Zeile f√ľr die Pagination:

Route::get('topic/{topic}/page/{page}', 'TopicController@index');
Route::get('topic/{topic}', 'TopicController@index');

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

Links in den Blade Templates

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!


Fragen / Kommentare