j'essaie de porter mon application laravel4 vers laravel 5. Dans la version précédente, je pouvais utiliser la méthode suivante pour générer des URL de pagination.
Dans le contrôleur:
$this->data['pages']= Page::whereIn('area_id', $suburbs)->where('score','>','0')->orderBy('score','desc')->paginate(12);
et après avoir partagé le tableau de données avec la vue, je pourrais utiliser
En vues:
{{$pages->links()}}
In laravel 5 ce qui se traduit par l'erreur suivante
ErrorException in AbstractPaginator.php line 445:
call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Support\Collection' does not have a method 'links'
je ne sais pas ce qui me manque ici, quelqu'un peut-il m'aider?
Dans Laravel 5 il n'y a pas de méthode "liens" vous pouvez essayer ceci
{!! $pages->render() !!}
Dans d'autres cadres, la pagination peut être très douloureuse. Laravel 5 en fait un jeu d'enfant. Pour l'utiliser, vous devez d'abord faire un changement dans le code de votre contrôleur où vous appelez les données de la base de données:
public function index()
{
$users = DB::table('books')->simplePaginate(5);
//using pagination method
return view('index', ['users' => $users]);
}
... après cela, vous pouvez utiliser ce code:
<?php echo $users->render(); ?>
Cela vous fera utiliser une simple Laravel 5 beauté.
Pagination Laravel 5.6.26, pour la pagination, le contrôleur est:
Code du contrôleur ( https://laravel.com/docs/5.6/pagination#basic-usage )
posts = Post::orderBy('created_at','desc')->paginate(10);
return view('posts.index')->with('posts', $posts);
Partie avant dans la lame (voir) ( https://laravel.com/docs/5.6/pagination#displaying-pagination-results )
{{ $users->links() }}
$items = SomeDataModel->get()->paginate(2); // in your controller
@foreach(items as $item) // in your view.blade file
....echo some data here
@endforeach
<div class="pagination">
{{ $items->render() }} or {{ $items->links() }}
</div>
Utilisez le nom du tableau (éléments) dans la méthode render () ou links () PAS l'élément du tableau. Ça a marché pour moi.