1. Mở rộng Blade (Extending Blade) (chưa đọc đến đây)
https://viblo.asia/p/tap-13-blade-template-laravel-1VgZv1dRKAw
Laravel cho phép chúng ta tự định nghĩa các thẻ bằng phương thức directive
có trong Blade
facade. Việc này đương nhiên chúng ta cũng sẽ code trong boot
của AppServiceProvider
.
Quan sát đoạn code trên, tại method Blade::directive
:
Tham số thứ nhất là tên thẻ
Tham số thứ hai là một Closure object, nó sẽ chứa biến dữ liệu nhận được qua các tham số của thẻ trong blade view. Trong Closure này, ta sẽ
return
mã PHP được viết dưới dạng chuỗi.
Sau khi đăng ký xong, ta có thể test thẻ @print
như sau:
Nếu bạn muốn truyền nhiều tham số cho thẻ của mình thì bạn có thể xử lý chuỗi $expression
để lấy các giá trị tham số.
Để mình test cho các bạn xem, tại Closure object mình sẽ dump $expression
.
Sau đó mình thử gọi @print
và truyền nhiều tham số vào nó:
Đây là kết quả:
Như các bạn thấy, $expression
trả về chuỗi với dạng:
Các bạn có thể tùy biến để có thể lấy các giá trị tham số từ $expression
.
Lưu ý: Trong khi phát triển ứng dụng, nếu có sử dụng thẻ riêng trong blade view thì sau mỗi lần sửa đổi code xử lý trong mỗi thẻ riêng thì phải chạy lệnh Artisan
view:clear
để xóa cache và compile lại các view.
Ngoài ra bạn cũng có thể tự tạo cho mình lệnh điều kiện riêng có thể gọi trong blade view bằng method Blade::if
được đăng ký tại boot
của AppServiceProvider
.
Với Blade::if
thì:
Tham số thứ nhất là tên lệnh điều kiện,
Tham số thứ hai là Closure nhận biến giá trị truyền vào và trả về boolean
Như đăng ký trên, nó sẽ kiểm tra môi trường hiện tại của ứng dụng, nếu trùng khớp thì sẽ trả về true
, còn không thì trả về false
.
Ta có thể sử dụng trong blade view như sau:
Cảm ơn các bạn đã quan tâm theo dõi. Cùng đồng hành với mình qua những tập tiếp theo tại series "Hành trình chinh phục Laravel Framework" nhé! Chúc may mắn và hẹn gặp lại.
Ví dụ đã thực hiện:
C:\xampp\htdocs\blog\app\Providers\AppServiceProvider.php
C:\xampp\htdocs\blog\resources\views\child.blade.php
C:\xampp\htdocs\blog\routes\web.php
Last updated