Sau một thời gian im hơi lặng bóng với series PHP Laravel Framwork, thì ngày hôm nay mình đã quay trở lại và giới thiệu với mọi người một số directives hữu dụng trong Blade template mà có thể bạn chưa biết
Chú ý các directive dưới đây chỉ dùng được cho phiên bản Laravel 5.5 trở lên thôi, riêng phần 6 và 7 chỉ Laravel 5.6 trở lên mới có thể sử dụng.
1, @includeFirst().
Nếu như trước đây bạn cần phải viết một đoạn code khá là dài để kiểm tra view có tồn tại hay không thì mới include và ngược lại...
VD1:
@if(view()->exists('view1')) @include('view1') @else @include('view2') @endif
Thì thay vì viết dài như thế bạn có thể sử dụng directive @includeFirst() cho ngắn gọn với cú pháp như sau:
@includeFirst(['view1, view2, ..., viewN'], data)
Trong đó:
- view1, view2, ... là các view mà chúng ta muốn include. Blade sẽ chỉ include duy nhất một view đúng đầu tiên mà nó check được.
- data là một mảng chứa dữ liệu truyền vào view.
VD2: Rút ngắn ví dụ 1 với @includeFirst()
@includeFirst(['view1', 'view2']);
2, @includeIf()
Nếu bạn muốn kiểm tra view tồn tại thì mới include thì hãy sử dụng @includeIf() thay vì phải dùng if directive để check.
VD3:
@includeIf('view', ['key' => 'data'])
3, @includeWhen()
Nếu như bạn muốn có một tham số để check xem view này có nên được include hay không thì @includeWhen() sẽ giúp bạn.
VD4:
@include($flag, 'view', ['some' => 'data'])
Trong ví dụ trên nếu như $flag trả về true thì nó mới include view.
4, @auth.
Thông thường để check auth trong blade template thì chúng ta thường sử auth() helper để check.
VD5:
@if(auth()->user()) // The user is authenticated. @endif
Nhưng nếu bạn muốn ngắn gọn và minh bạch hơn thì có thể sử dụng directive @auth trong blade template.
VD5:
@auth // The user is authenticated. @endauth
5, @guest.
Tương tự như @auth() directive thì đối với guest blade cũng cung cấp cho chúng ta directive @guest.
VD6:
// normal @if(auth()->guest()) // The user is not authenticated. @endif // shortcode @guest // The user is not authenticated. @endguest
Và nó cũng có cơ chế else
@guest // The user is not authenticated. @else // The user is authenticated. @endguest
6, @csrf.
Thay vì phải dùng:
{{ csrf_field() }}
như cũ thì bạn có thể chuyển đổi nó về dạng directive cho ngắn gọn như sau:
@csrf
7, @method().
Tương tự bạn cũng có thể thay thế:
{{ method_field('DELETE') }}
về dạng directive như sau:
@method('DELETE')