Blade là một trong những tính năng mạnh mẽ của Laravel, giúp việc phát triển giao diện trở nên nhanh chóng và dễ dàng. Một trong những khả năng hữu ích của Blade là cho phép bạn tạo Custom Blade Directive để tái sử dụng logic trong các file giao diện. Trong bài viết này, codetuthub.com sẽ hướng dẫn bạn cách tạo và sử dụng Custom Blade Directive trong Laravel.
1. Custom Blade Directive là gì?
Custom Blade Directive trong Laravel là một cách để tạo các cú pháp Blade tùy chỉnh, giúp rút gọn code và cải thiện khả năng tái sử dụng trong các file giao diện. Thay vì viết logic dài dòng trong Blade template, bạn có thể tạo một directive ngắn gọn và dễ sử dụng hơn.
Ví dụ, thay vì sử dụng cú pháp dài dòng như sau:
@if(Auth::check() && Auth::user()->isAdmin())
<p>Chào mừng Admin!</p>
@endifBạn có thể tạo một directive như @isAdmin để đơn giản hóa như sau:
@isAdmin
<p>Chào mừng Admin!</p>
@endisAdmin2. Cách tạo Custom Blade Directive trong Laravel
2.1. Định nghĩa Blade Directive
Trong Laravel, bạn có thể đăng ký Blade Directive bằng cách sử dụng phương thức Blade::directive() trong AppServiceProvider hoặc một Service Provider tùy chỉnh.
Mở file app/Providers/AppServiceProvider.php, tìm phương thức boot(), và thêm đoạn mã sau:
<?php
use Illuminate\Support\Facades\Blade;
public function boot()
{
Blade::directive('isAdmin', function () {
return "<?php if(auth()->check() && auth()->user()->isAdmin()): ?>";
});
Blade::directive('endisAdmin', function () {
return "<?php endif; ?>";
});
}2.2. Cách sử dụng Blade Directive
Sau khi định nghĩa directive, bạn có thể sử dụng nó trong các file Blade như sau:
@isAdmin
<p>Chào mừng Admin!</p>
@endisAdminMỗi khi directive @isAdmin được gọi, Laravel sẽ kiểm tra xem người dùng có quyền Admin hay không và hiển thị nội dung tương ứng.
3. Truyền tham số vào Blade Directive
Bạn cũng có thể truyền tham số vào directive. Ví dụ, tạo một directive để format giá tiền:
Thêm vào boot() của AppServiceProvider.php:
Blade::directive('currency', function ($amount) {
return "<?php echo number_format($amount, 2) . ' VND'; ?>";
});Sau đó, sử dụng trong Blade như sau:
<p>Giá sản phẩm: @currency(1500000)</p>Kết quả hiển thị sẽ là:

4. Custom Blade Directive phức tạp hơn
Bạn cũng có thể tạo directive để bao bọc nhiều dòng code bằng cách sử dụng Blade::if(). Ví dụ, tạo một directive kiểm tra quyền của người dùng:
Blade::if('role', function ($role) {
return auth()->check() && auth()->user()->role === $role;
});Cách sử dụng trong Blade:
@role('admin')
<p>Bạn có quyền Admin</p>
@endrole5. Kết luận
Custom Blade Directive trong Laravel giúp bạn tối ưu hóa mã nguồn, giảm sự lặp lại và cải thiện tính dễ đọc của giao diện. Bằng cách tạo các directive tùy chỉnh, bạn có thể đơn giản hóa logic trong template và viết code gọn gàng hơn.
Hy vọng bài viết này từ codetuthub.com đã giúp bạn hiểu cách tạo Custom Blade Directive trong Laravel. Nếu bạn có câu hỏi, hãy để lại bình luận bên dưới!








