4. Vòng lặp (Loop) (ok)

https://viblo.asia/p/tap-13-blade-template-laravel-1VgZv1dRKAw

3. Vòng lặp (Loop)

Cũng giống như các cấu trúc điều khiển khác, các câu lệnh loop trong Blade template vẫn được giữ nguyên cách thức hoạt động.

// For statement
@for ($i = 0; $i < 10; $i++)
    {{ $i }} </br>
@endfor

// Foreach statement
@foreach ($array as $row)
    {{ $row['attr'] }} </br>
@endforeach

// While statement
@while (true)
    <p>I'm looping forever.</p>
@endwhile

Laravel cung cấp cho chúng ta thẻ @forelse, thẻ này hoạt động giống như là @foreach nhưng ta có thể kiểm tra nhanh xem object tham chiếu trong loop có rỗng hay không, nếu có thì sẽ thực thi lệnh gì đó thông qua thẻ @empty.

Bạn có thể test đoạn code này thì sẽ hiểu rõ thẻ @forelse ngay.

@forelse ([] as $user)
    <li>{{ $user['name'] }}</li>
@empty
    <p>No users</p>
@endforelse

Như quan sát, mình đã truyền một mảng rỗng vào vòng lặp, lặp tức thì nó sẽ được kiểm tra qua thẻ @empty. Kết qua ta thu được sẽ là:

Nói về vòng lặp thì không thể thiếu continuebreak được, đương nhiên hai lệnh này vẫn được Blade template chuyển cú pháp thành @continue@break.

@for ($i = 1; $i <= 10; $i++)
    @if ($i == 1)
        @continue
    @endif

    {{ $i }}

    @if ($i == 5)
        @break
    @endif
@endforeach

Nếu bạn thấy mỗi lần muốn break hoặc continue phải lồng trong một câu lệnh if thì hơi dài và khá rối mắc. Chính vì thế Laravel cho phép bạn truyền điều kiện vào hai thẻ @break@continue để rút ngắn thời gian cho bạn.

@for ($i = 1; $i <= 10; $i++)
    @continue($i == 1)

    {{ $i }}

    @break($i == 5)
@endforeach

Last updated