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.
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()))) !!}

{{percentage}} % positiv
