Quay lại

Blade stringable để handle objects centrally trong Laravel Chuyên mục PHP và Laravel    2023-09-10    1k Lượt xem    93 Lượt thích    comment-3 Created with Sketch Beta. 0 Bình luận

Blade stringable để handle objects centrally trong Laravel

Sẽ không hữu ích nếu bạn có thể xác định một hành động nhất định sẽ được thực hiện mỗi khi các  Blade templates của bạn gặp các đối tượng thuộc một lớp cụ thể?

Vì vậy, chẳng hạn, giả sử khi làm việc với các thư viện như Carbon, bạn thường muốn định dạng nó theo một cách nhất định trong ứng dụng của mình.

Thông thường, nếu bạn muốn định dạng ngày theo định dạng cụ thể cho phiên bản Carbon, bạn có thể thực hiện điều đó trong các mẫu Blade như vậy.

{{ $post->created_at->format('d-m-Y') }}

Điều này ổn. Nhưng như bạn có thể biết, bạn cũng sẽ thấy mình lặp lại điều tương tự ở những nơi khác trong ứng dụng của mình. Khi tất cả những gì bạn muốn là định dạng nó tương tự ở mọi nơi có phiên bản Carbon trong các mẫu Blade của bạn.

PR cho Laravel 8.x này cố gắng giải quyết chính vấn đề này.

Blade Stringable

Hóa ra, PR này giới thiệu một phương thức Blade::stringable() mới có thể được đặt trong phương thức khởi boot của Service Provider và cho phép người dùng thêm các closures  chặn cho bất kỳ class nào. Giá trị trả về sẽ được xuất ra trong Blade.

Vì vậy, nếu chúng ta muốn mọi đối tượng Carbon tìm thấy trong các mẫu Blade được định dạng theo một cách nhất định, chúng ta có thể định nghĩa nó trong phương thức boot của App\Providers\AppServiceProvider như vậy.

<?php

namespace App\Providers;

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

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Blade::stringable(Carbon::class, function ($object) {
            return $object->format('d-m-Y');
        });
    }
}

Sau khi hoàn tất, bạn không cần định dạng ngày dựa trên Carbon trong ứng dụng của mình theo cách thủ công. Định dạng được chỉ định trong Blade::stringable sẽ được áp dụng cho mọi Carbon date có sẵn trong ứng dụng của bạn.

Khá tiện dụng phải không?

Bạn có thể áp dụng điều này cho bất kỳ class/library nào mà bạn muốn có sự đồng nhất trong toàn bộ ứng dụng của mình.

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