Chuyển tới nội dung
Trang chủ » Tạo admin grid với dữ liệu của nhiều table

Tạo admin grid với dữ liệu của nhiều table

Cách tạo một admin grid từ một table thì các bạn đã biết rồi phải không nào. Nếu bạn nào chưa biết có thể xem lại bài viết tạo grid của admin tại đây. Trong bài viết này mình sẽ hướng dẫn các bạn tạo một grid chứa dữ liệu của nhiều table trong Magento 2.

Tạo Ui Component

[Vendor]/[Module]/view/adminhtml/ui_component/your_grid.xml

Tạo di.xml

[Vendor]/[Module]/etc/di.xml

Tạo Collection

[Vendor]/[Module]ModelResourceModelProcessingGridCollection.php

Admin grid với dữ liệu của nhiều bảng
Admin grid với dữ liệu của nhiều bảng

Làm đến đây các bạn sẽ có được 1 grid với dữ liệu như mong muốn. Nhưng chưa dừng lại ở đây. Chúng ta phải làm thêm vài bước nữa để hoàn thiện grid của mình. Nếu bạn filter sẽ gặp lỗi này:

Lỗi filter trong admin grid khi join bảng
Lỗi filter trong admin grid khi join bảng

Để khắc phục lỗi này bạn cần thêm một biến protected $_map và thêm các field cần filter vào trong file Collection.php ở trên.

Hoặc bạn cũng có thể sử dụng function addFilterToMap để thực hiện công việc tương tự:

Còn nếu dữ liệu export ra bị sai, ví dụ ngày giờ bị sai do không lấy đúng time zone thì các bạn có thể thêm đoạn code này vào file di.xml. Đoạn code này sẽ chuyển ngày giờ về đúng time zone cho bạn.

[Vendor]/[Module]/etc/adminhtml/di.xml

Còn nếu bạn muốn chỉnh sửa dữ liệu khi export thì các bạn có thể plugin vào function getRowData của class MagentoUiModelExportMetadataProvider.

Kết luận

Hy vọng bài viết này sẽ có ích đối với các bạn. Thanks.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *