Mam pytanie, jaka jest dokładna różnica między atrybutami rozszerzeń a atrybutami niestandardowymi ?
Ktoś tutaj, kto może dostarczyć mi kilka pomysłów?
magento2
extension-attributes
anonimowy
źródło
źródło
Odpowiedzi:
Atrybuty niestandardowe to atrybuty dodane w celu opisania jednostki, takie jak atrybuty produktu, atrybuty klienta itp. Są to podzbiór atrybutów EAV.
Z drugiej strony atrybuty rozszerzeń są zwykle używane do bardziej złożonych typów danych, takich jak dodawanie dodatkowych złożonych danych do encji z niestandardowej tabeli zewnętrznej.
Krótko mówiąc, niestandardowe atrybuty są zgodne ze standardami EAV, podczas gdy atrybuty rozszerzeń są używane w przypadku bardziej złożonych danych, których niestandardowe atrybuty nie mogą obsłużyć.
źródło
Niestandardowe atrybuty to te dodane w imieniu handlowca. Na przykład sprzedawca może potrzebować dodać niestandardowe atrybuty do encji produktu o nazwie „dostosowywalny”, w której chce zapisać informacje, że ten produkt będzie dostosowywany przez firmę zewnętrzną lub nie.
Zarówno atrybuty niestandardowe, jak i rozszerzenia mają nieco tę samą funkcjonalność (w celu zachowania danych), ale istnieją znaczne różnice między funkcjami atrybutów niestandardowych i atrybutów rozszerzenia. na przykład
możemy dodać dodatkowe kryteria wyszukiwania z atrybutem rozszerzenia, łącząc je z dowolną inną tabelą DB. Możemy to uwierzytelnić, dodając do niego ACL. Wyjaśnijmy szczegółowo.
Proszę spojrzeć na następujący fragment kodu. Musisz utworzyć plik /etc/extension_attributes.xml
Wyszukiwanie atrybutów rozszerzenia: W tagu złączenia możesz zdefiniować swoją tabelę dotyczącą, z którą chcesz się połączyć i uzyskać dane z tej tabeli. W atrybucie reference_table musisz podać nazwę tabeli, a pole referencyjne będzie kluczem podstawowym (pierwszy klucz tabeli, dla którego ten atrybut rozszerzenia tworzy się jak w przykładowych produktach), na którym umieścisz relację / złączenie. join_on_field jako nazwa sugerująca będzie drugą tabelą PK, dla której chcemy rekordy. Pod tagami pól możesz dodać wszystkie wymagane pola, które faktycznie chcesz uzyskać
Uwierzytelnianie atrybutu rozszerzenia: Możesz ograniczyć tę konkretną wartość atrybutu rozszerzenia za pomocą znacznika Aby to zrozumieć Pozwól nam podać przykład. Załóżmy, że mamy więcej niż jeden atrybut rozszerzenia dla produktów, a jeden z nich mówi, że cena extra_special_special nie chcemy pokazywać go wszystkim użytkownikom. Możemy ograniczyć ten atrybut. Spójrz na następujący fragment kodu.
W tym przykładzie atrybut stock_item jest ograniczony tylko do użytkowników, którzy mają uprawnienie Magento_CatalogInventory :: cataloginventory, podczas gdy logo_size nie ma żadnego warunku.
Więc teraz, jeśli otrzymasz obiekt produktu (w jakikolwiek sposób za pośrednictwem interfejsu API lub z Internetu), jeśli bieżący użytkownik ma uprawnienia do katalogu, dostanie tylko wartości zapasów.
Poza zakresem tego pytania, ale spójrz, jak utworzysz atrybut za pomocą custom_extension w następujący link w bardzo prosty sposób: Jak utworzyć atrybuty rozszerzenia
źródło