L oop интеграция внутри директивы @each - PullRequest
1 голос
/ 06 марта 2020

Я пытаюсь перебрать все oop элементов, которые включены через директиву @each в Laravel Blade.

Когда я использую обычный @foreach l oop это прекрасно работает, и я могу перебирать нечетные / четные записи, но при использовании @each эта концепция, похоже, не работает.

Я делаю что-то не так или это ожидаемое поведение @each директива?

Мой код выглядит следующим образом:

splits.blade. php

<section>
    @each('_partials/components.split', $page->splits, 'split')
</section>

split. клинок. php

<article
    @if ($loop->odd)
        style="background-image: url('placehold.it/1920x400');"
        class="bg-cover bg-center"
    @else
        class="bg-white"
    @endif
    >
</article>

Любая помощь будет принята с благодарностью.

Большое спасибо

Matt

Ответы [ 2 ]

1 голос
/ 06 марта 2020

Каждый не включает переменную $ l oop в блейд-файл автоматически, но передает переменную $key.

Таким образом, вы можете написать:

<article
    @if ($key % 2 == 0)
        style="background-image: url('placehold.it/1920x400');"
        class="bg-cover bg-center"
    @else
        class="bg-white"
    @endif
    >
</article>
1 голос
/ 06 марта 2020

Каждая директива не имеет переменной $loop, как foreach.

Однако он отправляет ключ каждого элемента в предоставленном массиве в представление. Поэтому, если вы не устанавливали пользовательские ключи, переменная $key должна содержать значение от 0 до длины вашего массива.

Просто выясните это, просмотрев исходный код .

...