2015-07-31 10 views
16

Abbiamo lavorato su questo troppo a lungo senza risultati. Ho provato.Laravel 5.1 specificando la pagina corrente per l'impaginazione

`\Illuminate\Pagination\Paginator::setCurrentPage($current_page);` 

restituisce Call to protected method Illuminate\Pagination\Paginator::setCurrentPage()

\Paginator::setCurrentPage($current_page);

restituisce Call to protected method Illuminate\Pagination\Paginator::setCurrentPage()

\DB::getPaginator()->setCurrentPage($current_page);

rendimenti call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Database\MySqlConnection' does not have a method 'getPaginator'

$tmp = new Post(); $tmp->getConnection()->setCurrentPage($current_page);

rendimenti call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Database\MySqlConnection' does not have a method 'getPaginator'

Come posso specificare la pagina? Devo specificarlo manualmente.

avevo sperato che fosse così facile come $model->find()->paginate($per_page, $page)

+1

Inoltre sto avendo questo problema, ti farò sapere se ho lavorare fuori – Adam

risposta

20

Supponiamo di avere $users per impaginare in UserController, si potrebbe fare:

public function index() 
{ 
    $currentPage = 3; // You can set this to any page you want to paginate to 

    // Make sure that you call the static method currentPageResolver() 
    // before querying users 
    Paginator::currentPageResolver(function() use ($currentPage) { 
     return $currentPage; 
    }); 

    $users = \App\User::paginate(5); 

    return view('user.index', compact('users')); 
} 

Credo che questo vale per laravel 5.0 e superiori. Devo controllarlo.

+2

ho dovuto correre con '\ Illuminate \ Pagination \ Paginator :: currentPageResolver' else ha cercato la classe nello spazio dei nomi corrente. Con '\ Paginator 'mi ha detto che la classe non è stata trovata. In questo modo funziona! – Shane

+3

Shane, potresti avere importato la classe nella parte superiore del tuo controller: 'use Illuminate \ Pagination \ Paginator;' – kishanterry

+0

Perfetto. Grazie. –

23

Il Builder classe ha:

public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null) 

È possibile chiamare

Model::find(...)->paginate($per_page, ['*'], 'page', $page); 
+2

Approccio più semplice e chiaro. – EGurelli

+0

Sì, questo approccio è migliore. Grazie @PATROMO. – GAD

+0

Fantastico. Grazie @Patromo. –