Alla fine, ho dovuto codificarmi un paginatore. Sto postando qui la mia soluzione, dovrebbe aiutare qualcuno.
Si noti che la soluzione, sebbene funzionale, richiede una certa attenzione per l'uso pratico (sulla convalida); la classe è semplificata qui per evidenziare il meccanismo.
<?php namespace App\Services;
use Illuminate\Support\Collection;
use Illuminate\Pagination\BootstrapThreePresenter;
use Illuminate\Pagination\LengthAwarePaginator as BasePaginator;
class Paginator extends BasePaginator{
/**
* Create a new paginator instance.
*
* @param mixed $items
* @param int $perPage
* @param string $path Base path
* @param int $page
* @return void
*/
public function __construct($items, $perPage, $path, $page){
// Set the "real" items that will appear here
$trueItems = [];
// That is, add the correct items
for ($i = $perPage*($page-1) ; $i < min(count($items),$perPage*$page) ; $i++){
$trueItems[] = $items[$i];
}
// Set path as provided
$this->path = $path;
// Call parent
parent::__construct($trueItems,count($items),$perPage);
// Override "guessing" of page
$this->currentPage = $page;
}
/**
* Get a URL for a given page number.
*
* @param int $page
* @return string
*/
public function url($page){
if ($page <= 0) $page = 1;
return $this->path.$page;
}
}
di utilizzare la classe, è possibile definire un percorso
Route::get('items/{page}','[email protected]');
Poi in detto controllore, in getElements
:
$items = new Paginator(Model::all(),$numberElementsPerPage,url('items'),$page);
Quindi, è possibile smaltire i elementi, come si normalmente lo farebbe. Nota: ho aggiunto un'opzione di percorso, al fine di integrare progetti di url piuttosto complessi. Spero che aiuti!
Potresti usare 'mod_rewrite' per convertire l'URL della stringa di query corretta? Converti internamente in 'localhost/ads? Page = 1'. –
@BenHarold Certo, funzionerebbe per reindirizzare i collegamenti. Tuttavia, non cambierà il problema della generazione dei link, penso. – repptilia