Quay lại

Tạo Blade directive tùy chỉnh của riêng bạn trong Laravel Chuyên mục PHP và Laravel    2023-08-02    657 Lượt xem    91 Lượt thích    comment-3 Created with Sketch Beta. 0 Bình luận

Tạo Blade directive tùy chỉnh của riêng bạn trong Laravel

Laravel Blade đi kèm với nhiều chỉ thị dựng sẵn như @section, @yield, @parent, @json và một số chỉ thị khác, tất cả đều có một mục đích nhất định gắn liền với chúng.

Chẳng hạn, lệnh @json có thể được sử dụng để encode( mã hóa)  JSON thay vì sử dụng trực tiếp json_encode .

<script>
    var app = @json($array);

    var app = @json($array, JSON_PRETTY_PRINT);
</script>

Như mình đã đề cập, đây là các chỉ thị được tạo sẵn đi kèm với tính năng sẵn có của Laravel. Nhưng nếu bạn muốn tạo các chỉ thị tùy chỉnh của riêng mình thì sao? Bạn làm điều đó như thế nào?

Custom Blade Directive

Blade cung cấp cho bạn khả năng xác định các chỉ thị tùy chỉnh của riêng bạn bằng cách sử dụng phương thức directive trên Illuminate\Support\Facades\Blade facade. Khi trình biên dịch Blade gặp directive (chỉ thị) tùy chỉnh, nó sẽ gọi callback được cung cấp với biểu thức mà chỉ thị đó chứa.

Ví dụ: nếu bạn muốn tạo một lệnh tùy chỉnh có tên @convert($var) để chuyển đổi số được cung cấp thành hai chữ số thập phân, bạn có thể xác định lệnh đó trong phương thức boot của AppServiceProvider như này.

<?php

namespace App\Providers;

use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    // code commented for brevity

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Blade::directive('convert', function ($number) {
            return "<?php echo number_format($number, 2); ?>";
        });
    }
}

Bây giờ, mỗi khi bạn muốn định dạng một số thành hai chữ số thập phân trong Blade template của mình, bạn chỉ cần gọi nó như này.

@convert($var)
 
 

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