-
-
Save martinandersen3d/b0c9cbce83c493721c2cedcddadc89b9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* usage in a controlller: | |
* public function index($page=1) { | |
* $users = User::paginateUri(5, $page); | |
* return view('users', compact('users')); | |
* } | |
* it also support variable number of parameters, | |
* routes must be defined using {page} or {page?} placeholders | |
* $links is returned as reference and contain a standard bootstrap 3 navigation | |
* Add to model (ex.User): | |
* use PaginateTrait; | |
* | |
* AND in view: $users->linksUri | |
**/ | |
namespace App\Traits; | |
use Illuminate\Pagination\Paginator; | |
Trait PaginateTrait | |
{ | |
public static function scopePaginateUri($query,$items, $page) | |
{ | |
$action = app('request')->route()->getActionName(); | |
$parameters = app('request')->route()->parameters(); | |
$parameters['page'] = '##'; | |
$current_url = action(str_replace('App\Http\Controllers\\', '', $action), $parameters); | |
Paginator::currentPageResolver(function () use ($page) { | |
return $page; | |
}); | |
$paginate = $query->paginate($items); | |
$links = preg_replace('@href="(.*/?page=(\d+))"@U', 'href="' . str_replace('##', '$2', $current_url) . '"', $paginate->render()); | |
$paginate->linksUri = $links; | |
return $paginate; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment