1. Laravel cung cấp cho chúng ta thẻ @include, @includeIf, @includeWhen, @includeFirst (ok)

@include trong Blade template cho phép bạn có thể liên kết một blade view với một view khác. Tất cả các biến dữ liệu ở parent view đều được truyền đến view include.

Chẳng hạn mình có cấu trúc thư mục như sau:

resources/
├── views/
|   ├── includes/
|   |   |   room.blade.php
|   |   home.blade.php

Ở blade view home ta code:

@php
    $name = 'Lê Chí Huy';
@endphp

@include('includes.room')

Như các bạn thấy, mình đã sử dụng cú pháp @include với tham số là tên view liên kết cần đưa vào blade view home này. Ngoài ra mình có khai báo biến $name để thử xem là blade view includes.room có nhận được hay không.

Tại blade view includes.room mình code như sau:

{{ $name }}

Cuối cùng là đăng ký route để render blade view home ra:

Route::get('/', function () {
    return view('home');
});

Kết quả này chứng minh cho việc ta có thể lấy tất cả các dữ liệu tại view liên kết từ parent view. Ngoài ra bạn cũng có thể truyền một dữ liệu bất kì cho view liên kết thông qua tham số thứ hai của thẻ @include.

@include('view.name', ['some' => 'data'])

Kết quả này chứng minh cho việc ta có thể lấy tất cả các dữ liệu tại view liên kết từ parent view.

Trong trường hợp nếu bạn @include một view không tồn tại thì framework sẽ báo lỗi. Chính vì vậy khi include một view không chắc chắn sẽ tồn tại thì ta sử dụng thẻ @includeIf thay cho @include.

@includeIf('view.name', ['some' => 'data'])

Bạn cũng có thể include một view khi kiểm tra một điều kiện nào đó trả về boolean true.

@includeWhen($boolean, 'view.name', ['some' => 'data'])

Laravel còn cung cấp thẻ @includeFirst, thẻ này cho phép ta include view đầu tiên trong mảng view khai báo. Nhiều bạn sẽ hiểu ngay công dụng của thẻ này nếu theo dõi các tập trước của mình.

@includeFirst(['custom.admin', 'admin'], ['some' => 'data'])

Như dòng code này, nếu view custom.admin tồn tại thì nó sẽ include view này và bỏ qua view admin. Còn nếu view custom.admin không tồn tại thì nó sẽ bỏ qua và tiếp tục kiểm tra view admin.

Lưu ý: Bạn nên tránh sử dụng __DIR____FILE__ trong blade view vì chúng chỉ trả kết quả đường dẫn của các file cache hay compile view, không cung cấp thông tin cần thiết.

Last updated