Quay lại

Tạo custom conditional directives trong Laravel Blade Chuyên mục PHP và Laravel    2023-08-02    450 Lượt xem    19 Lượt thích    comment-3 Created with Sketch Beta. 0 Bình luận

Tạo custom conditional directives trong Laravel Blade

Công cụ Blade template của laravel rất tuyệt vời và không ngừng phát triển. Có một số tính năng trong Blade, nếu được sử dụng phù hợp, có thể làm cho codebase của bạn trông có tổ chức và dễ nhận biết hơn.

Một tính năng mà tôi mới bắt gặp gần đây là nơi một người có thể tạo các directives Blade có điều kiện tùy chỉnh của riêng họ mà bạn có thể sử dụng trong codebase của mình. Loại directive Blade này có thể hữu ích nếu bạn không muốn làm hỏng các Blade views của mình bằng cách đưa vào logic phức tạp và để làm cho views của bạn rõ ràng hơn nhiều.

Bạn có thể tạo một lệnh có điều kiện tùy chỉnh bằng cách sử dụng phương thức Blade::if mà bạn có thể xác định trong phương thức root của AppServiceProvider.

Vì vậy, nếu bạn muốn tạo một lệnh có điều kiện tùy chỉnh để kiểm tra loại book và trả về kết quả boolean tương ứng, bạn có thể thực hiện như sau.

use Illuminate\Support\Facades\Blade;

class AppServiceProvider extends ServiceProvider
{
    // code commented for brevity

    public function boot()
    {
        Blade::if('booktype', function ($booktype) {
            if (in_array($booktype, ['fiction', 'nonfiction'])) {
                return true;
            } 

            return false;
        });
    }
}

Như bạn có thể thấy, Blade::if có hai đối số. Đầu tiên là name of the custom conditional (tên của điều kiện tùy chỉnh ) mà chúng ta sẽ sử dụng trong template Blade. Trong trường hợp của chúng ta, đó là booktype. Và đối số thứ hai là bao closure thực hiện logic. Tất nhiên, đây là một logic thực sự đơn giản mà tôi đã định nghĩa nhưng điều này có thể hữu ích khi bạn muốn áp dụng một số logic phức tạp hơn.

Sau khi được tạo, bây giờ bạn có thể sử dụng điều kiện tùy chỉnh này như này.

@booktype('fiction')
    // This is a fiction book
@elsebooktype('nonfiction')
    // This is a non-fiction book
@else
    // This book falls into some other category
@endbooktype

Bạn thậm chí có thể sử dụng unless trong điều kiện giống như lệnh if thông thường nếu bạn chỉ muốn kiểm tra booktype cụ thể như này.

@unlessbooktype('nonfiction')
    // This is a non-fiction book
@endbooktype

Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough

Bài viết liên quan

Learning English Everyday