J'ai un projet dans lequel je tire des articles de la base de données et les affiche sur la page d'accueil. Comme un blog. (Sur la page d'accueil, je limite cela à 3 articles)
J'ai 6 lignes dans le tableau, et je voudrais styliser la sortie en fonction des lignes ODD et Pair.
Voici mon contrôleur:
if ($counter == odd) <div class="odd"> else <div class="even">
Je veux que les lignes paires aient Quand je Ce que j'essaie actuellement d'après d'autres articles que j'ai trouvés: Cela ne fonctionne pas n'importe quoi. Affiche toujours les lignes sous la forme 6,5,4,3,2,1 Alors, comment puis-je écrire l'instruction IF dans ma boucle Foreach pour dire ... dd sur $ counter j'obtiens la valeur 6. Ceci est correct. J'ai 6 lignes dans le tableau. @foreach ($posts as $post)
@if($counter % 2 == 0)
<div class="even">{{$post->title}}</div>
@else
<div class="odd">{{$post->title}}</div>
@endif
public function index()
{
$counter = Post::count();
$posts= DB::table('posts')->orderBy('id', 'DESC')->limit(3)->get();
return view('home',compact('posts','counter'));
}
3 Réponses :
$ counter est une variable statique, donc appeler $ counter% 2 == 0 affichera toujours le même résultat. Si vous utilisez la version 5.4+, il existe une variable $ loop incluse dans @foreach () . Ainsi, vous pouvez accéder à votre division de mod dans la boucle.
@foreach ($posts as $post)
@if($loop->iteration % 2 == 0)
<div class="even">{{$post->title}}</div>
@else
<div class="odd">{{$post->title}}</div>
@endif
@endforeach
J'utilise 5.7 Je n'avais aucune idée de la variable $ loop. Cela a très bien fonctionné. Dans ce cas, $ counter ne serait alors pas nécessaire, n'est-ce pas?
C'est correct, $ loop devrait pouvoir le gérer. Je suis passé à la version 5.4 quand j'ai découvert le truc $ loop . Vient si souvent utile.
Vous devez incrémenter le compteur à chaque itération.
@php
$counter = 1;
@endphp
@foreach ($posts as $post)
@if($counter % 2 == 0)
<div class="even">{{$post->title}}</div>
@else
<div class="odd">{{$post->title}}</div>
@endif
@php
$counter++;
@endphp
@endforeach
Cela fonctionne aussi bien, mais la variable $ loop semble un peu plus propre à l'OMI. Merci pour l'aide.
Laravel 5.8.5 ajoute des indicateurs booléens pairs et impairs dans la variable de boucle Blade
Vous pouvez maintenant utiliser:
$ loop-> pair ou $ loop-> impair
Au lieu de
$ loop-> itération% 2