[Bài đọc] Câu lệnh lặp trong Blade

2. Cơ bản về Laravel Framework

Lệnh lặp

Ngoài cấu trúc điều kiện, Blade cũng cung cấp các directive cho việc xử lý vòng lặp, các directive này tương tự với cấu trúc lặp của PHP:

@for ($i = 0; $i < 10; $i++)
    The current value is {{ $i }}
@endfor
 
@foreach ($users as $user)
    <p>This is user {{ $user->id }}</p>
@endforeach
 
@forelse ($users as $user)
    <li>{{ $user->name }}</li>
@empty
    <p>No users</p>
@endforelse 

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

Lưu ý: Trong vòng lặp, bạn có thể sử dụng biến lặp để lấy được thông tin giá trị của vòng lặp, chẳng hạn như bạn muốn lấy giá trị đầu tiên và cuối cùng của vòng lặp.

Khi sử dụng vòng lặp bạn cũng có thể kết thúc vòng lặp sớm hay bỏ qua lần lặp hiện tại:

@foreach ($users as $user)
    @if ($user->type == 1)
        @continue
    @endif
 
    <li>{{ $user->name }}</li>
 
    @if ($user->number == 5)
        @break
    @endif
@endforeach 

Bạn cũng có thể thêm điều kiện vào directive:

@foreach ($users as $user)
    @continue($user->type == 1)
 
    <li>{{ $user->name }}</li>
 
    @break($user->number == 5)
@endforeach 

Biến lặp

Trong vòng lặp, biến $loop sẽ tồn tại trong phần thân của vòng lặp. Biến này cho phép truy cập vào một số thông tin hữu ích như chỉ số hiện tại của vòng lặp và kiểm tra xem liệu đây có phải lần lặp đầu tiên hay cuối cùng không.

@foreach ($users as $user)
    @if ($loop->first)
        This is the first iteration.
    @endif
 
    @if ($loop->last)
        This is the last iteration.
    @endif
 
    <p>This is user {{ $user->id }}</p>
@endforeach 

Nếu bạn có vòng lặp lồng nhau, bạn có thể truy cập vào biến $loop cha qua thuộc tính parent:

@foreach ($users as $user)
    @foreach ($user->posts as $post)
        @if ($loop->parent->first)
            This is first iteration of the parent loop.
        @endif
    @endforeach
@endforeach 

Ngoài ra biến $loop còn chứa một số thông tin hữu ích được mô tả trong bảng sau:

Thuộc tínhMô tả
$loop->indexChỉ số của vòng lặp (bắt đầu từ 0).
$loop->iterationCác vòng lặp hiện tại (bắt đầu từ 1).
$loop->remainingSố lần lặp còn lại.
$loop->countTổng số phần tử trong mảng được lặp lại.
$loop->firstKiểm tra liệu đây có phải là lần lặp đầu tiên.
$loop->lastKiểm tra liệu đây có phải là lần lặp cuối cùng.
$loop->depthCấp độ lồng nhau của vòng lặp.
$loop->parentTrong vòng lặp lồng nhau, lấy về thông tin biến $loop trong vòng lặp cha.

Leave a Reply

Your email address will not be published. Required fields are marked *