Thuộc tính mở rộng là một cách để mở rộng Giao diện. Hãy lấy ví dụ về liên kết đầu tiên bạn cung cấp cho ProductAttributionMediaGalleryEntryInterface. Nếu bạn nhìn vào các phương thức ở đó bạn sẽ thấy rằng nó có phương pháp này
/**
* Retrieve existing extension attributes object or create a new one.
*
* @return \Magento\Catalog\Api\Data\ProductAttributeMediaGalleryEntryExtensionInterface|null
*/
public function getExtensionAttributes();
Lưu ý loại @return của phương thức ProductAttributionMediaGalleryEntryExtensionInterface - đây là giao diện sẽ được tạo lại nếu bạn xác định thuộc tính mở rộng cho ProductAttributionMediaGalleryEntryInterface (theo mặc định, nó được tạo không có phương thức). Tên của thuộc tính bạn đã đăng ký sẽ được sử dụng để tạo các phương thức giao diện.
Giả sử bạn đã thêm attr1 của chuỗi loại. Những gì bạn có thể làm sau khi giao diện được tái tạo là truy cập nó từ thể hiện của giao diện.
$entity = $objectManager->get('..\ProductAttributeMediaGalleryEntryInterface')
$entity->getExtensionAttributes()->getAttr1();
Để đặt thuộc tính, bạn cần khởi tạo giao diện Thuộc tính mở rộng
$extension = $objectManager->get('..\ProductAttributeMediaGalleryEntryExtensionInterface')
$extension->setAttr1('value');
$entity->setExtensionAttributes($extension)
Cái sau là kịch bản mặc định có sẵn, nó có thể được đơn giản hóa tùy thuộc vào cách mở rộng giao diện cha mẹ và phần mở rộng.
[Đã cập nhật]
Thuộc tính tùy chỉnh và thuộc tính mở rộng phục vụ các mục đích khác nhau.
Các thuộc tính tùy chỉnh là cần thiết để thể hiện các thuộc tính EAV của thực thể. Hầu hết các thuộc tính EAV là động: chúng có thể được thêm sau khi Magento được triển khai thông qua giao diện người dùng quản trị viên. Đó là lý do tại sao bạn không thể tự động hoàn thành mã cho các thuộc tính EAV: bạn không biết về tất cả chúng trước thời hạn.
Tuy nhiên, là nhà phát triển tiện ích mở rộng, bạn chắc chắn biết về một số thuộc tính - những thuộc tính mà bạn đã tạo tại thời điểm phát triển. Nó có thể là một trường mới trong cơ sở dữ liệu, trường trong cơ sở dữ liệu liên quan hoặc thuộc tính EAV. Bạn có thể đăng ký chúng làm thuộc tính mở rộng vì chúng không bao giờ thay đổi trừ khi cơ sở mã được thay đổi. Bạn có thể nhận được mã tự động hoàn thành cho họ.