Laravel blade php for

Циклы в шаблонизаторе Blade в Laravel

Шаблонизатора Blade в Laravel позволяет использовать не только примитивную логику для организации HTML кода вывода. Он ещё и обладает функционалом для создания циклом. Делается это с помощью директивы @foreach. Продемонстрируем его работу на примере:

@foreach ($ar as $el) 
>
@endforeach

Этот код выводит значения всех элементов массива «$ar». Как можно заметить логика синтаксиса очень похожа на конструкцию foreach в PHP. Используя тот же синтаксис, что и у PHP, можно привести пример вывода пары ключ-значение:

@foreach ($ar as $key => $el) 
Ключ: >, значение: >
@endforeach

Если массив использовался ассоциативный многомерный массив, то существует возможность обращения к элементу массива по ключу внутри этого цикла:

@foreach ($ar as $el) 
Имя: >, возраст: >
@endforeach
@foreach ($ar as $key => $el) @if ($el > 0) 
Ключ: >, значение: >
@endif @endforeach

Но на этом комбинации не исчерпываются: можно даже использовать один цикл внутри другого для перебора многомерных массивов. Это часто используется при построении таблиц, для программирования вывода строк и ячеек:

@foreach ($arFirst as $keyFirst => $arSecond) @foreach ($arSecond as $keySecond => $elSecond) @if ($elSecond > 0) Ключ из первого цикла: > 
Ключ из второго цикла: >
Значение из второго цикла: > @endif @endforeach @endforeach

Цикл for

Аналогично PHP, Blade умеет работать с простейшим циклом «for», у которого задан шаг, минимальное и максимальное значение:

Цикл forelse

Такой код будет выводить пару ключ-значение только если значение больше нуля. А с помощью такого кода можно выводить значение только есть массив не является пустым:

@if ( count($ar) ) @foreach ($ar as $el) 
>
@endforeach @else
Массив пустой!
@endif

Благодаря шаблонизатору Blade можно переписать этот код более компактно с помощью «@forelse«, при этом не потеряв логики (код будет делать то же самое):

@forelse ($ar as $el) 
>
@empty
Массив пустой!
@endforelse

«forelse» выполняет цикл только в том случае, если обходимый массив не является пустым. Если же он пустой, то выполняется директива «@empty«, которая ставится после него.

Читайте также:  border-color

Операции внутри цикла

Как и язык программирования PHP, шаблонизатор Blade умеет распознавать различные операции внутри цикла. К примеру, аналоги этих операций: «@break» (прерывает цикл) и «@continue» (приступает к следующей итерации цикла). Продемонстрируем их работу:

@foreach ($ar as $key => $el) @if ($el == 5) 
Ключ: >, значение: >
Прерываем цикл!
@break @endif @if ($el > 10)
Переходим к следующей итерации!
@continue @endif @endforeach

Переменная $loop внутри цикла

Внутри циклов существует специальная переменная $loop. Она записывается не как директива, а именно переменная (со знаком доллара в начале). В значение этой переменной попадает текущий индекс цикла. С помощью неё можно узнать на какой итерации цикла сейчас находимся. Это делается так:

@foreach ($ar as $key => $el) @if ($loop->first) Это первая итерация @endif @if ($loop->last) Это последняя итерация @endif @endforeach

Переменная $loop содержит несколько полезных свойств:

Свойство Описание
$loop->index Индекс текущей итерации цикла (начинается с 0).
$loop->iteration Текущая итерация цикла(начинается с 1).
$loop->remaining Число оставшихся итераций цикла.
$loop->count Общее число элементов итерируемого массива.
$loop->first Первая ли это итерация цикла.
$loop->last Последняя ли это итерация цикла.
$loop->depth Уровень вложенности текущего цикла.
$loop->parent Переменная loop родительского цикла, для вложенного цикла.

Если цикл вложенный, то к переменной $loop родительского цикла можно обратиться через свойство parent:

@foreach ($arFirst as $keyFirst => $arSecond) @foreach ($arSecond as $keySecond => $elSecond) @if ($loop->parent->first) Это первая итерация родительского цикла @endif @if ($loop->first) Это первая итерация сложенного цикла @endif @endforeach @endforeach

Источник

Оцените статью