Tutoriel Laravel 9 #9 : Pagination et articles similaire

Dans ce post, nous allons créer quelques fonctionnalités optionnelles pour notre site web. Si vous n’êtes pas intéressé, sautez ce post et allez à la section de déploiement final de ce tutoriel.

Pagination

Lorsque nous ajoutons de plus en plus d’articles dans notre blog, la création d’un paginateur peut être une bonne idée, car nous ne voulons pas avoir trop d’articles sur une seule page.

Tout d’abord, nous devons ajouter quelques codes dans nos contrôleurs, IndexController par exemple :

$posts = Post::where('is_published',true)->orderBy('id','desc')->paginate(5);

Remarquez la dernière méthode, au lieu de get()nous avons paginate(5). Cela signifie que nous aurons 5 messages pour chaque page. Bien entendu, vous pouvez modifier ce nombre comme bon vous semble.

Et maintenant nous devons dire à Laravel où ajouter le paginateur. Allez à resources/views/widgets/blog-masonry.blade.php

<!-- Pagination -->
<ul class="pagination justify-content-center mb-4">
    {{$posts->links("pagination::bootstrap-4")}}
</ul>

Rafraîchissez la page, et vous devriez voir ceci en bas.

Articles Similaires

L’idée est d’obtenir les messages ayant les mêmes tags. app/Http/Controllers/PostController.php
//articles similaire
$related_posts = Post::query()->where('is_published',true)->whereHas('tags', function ($q) use ($post) {
    return $q->whereIn('name', $post->tags->pluck('name'));
})->where('id', '!=', $post->id)->take(3)->get();
Ligne 3, $post->tags->pluck('name') renvoie un tableau avec toutes les balises de l’article. Ligne 5, where('id', '!=', $post->id) permet de s’assurer que le même poste ne sera pas inclus. N’oubliez pas de renvoyer le $related_posts. Ajoutez maintenant la section « Articles similaire » dans la vue :

Articles similaire

<!-- Articles similaire -->
<h3>Articles similaire</h3>

<div class="row">
    @foreach($related_posts as $post)
        <div class="col-md-4">
            <div class="card mb-4 box-shadow">
                <img class="card-img-top" src="{{Illuminate\Support\Facades\Storage::url($post['featured_image'])}}">
                <div class="card-body">
                    <p class="card-text">{{Illuminate\Support\Str::limit(strip_tags($post['content']), 100, '...')}}</p>
                    <div class="d-flex justify-content-between align-items-center">
                        <div class="btn-group">
                            <a href="http://localhost:8000/post/{{$post['slug']}}" class="btn btn-sm btn-outline-secondary">En savoir →</a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    @endforeach
</div>

Conclusion

Félicitations, vous êtes arrivés au bout de ce tutoriel sur Laravel 9, vous avez les bases pour commencer à développer votre projet. Si vous voulez approfondir vos connaissances, sachez que je compte faire une suite qui rentrera en plusieurs détails et qui demandera de connaitrez les bases que vous devriez normalement avoir acquis avec ce tutoriel 😉

Si vous cherchez à installer Laravel sur un serveur, j’ai réaliser un tutoriel à ce sujet sur comment installer Laravel sur Debian

Je vous invite également à voir la catégorie Laravel de Gekkode pour plus d’articles sur l’univers de Laravel.

Nouveau Tutoriel

Newsletter

Ne manquez jamais les nouveaux conseils, tutoriels et autres.

Pas de spam, jamais. Nous ne partagerons jamais votre adresse électronique et vous pouvez vous désabonner à tout moment.