Magento 2: Яка різниця між атрибутами розширення та спеціальними атрибутами?


14

У мене є питання, яка точна різниця між атрибутами розширення та спеціальними атрибутами ?

Хтось тут, хто може запропонувати мені кілька ідей ?!


@Amit, Ви можете мені допомогти з цим ?!
анонім

Я не впевнений на 100%, чому я не відповідаю на питання. Але мої точки зору обидва однакові
Аміт Бера

Відповіді:


8

Спеціальні атрибути - це атрибути, додані для опису сутності, такі як атрибути продукту, атрибути клієнта тощо. Це підмножина атрибутів EAV.

Атрибути розширення з іншого боку, як правило, використовуються для більш складних типів даних, таких як додавання додаткових складних даних в об'єкт із спеціальної зовнішньої таблиці.

Простіше кажучи, спеціальні атрибути відповідають стандартам EAV, тоді як атрибути розширення використовуються для більш складних даних, з якими власні атрибути не можуть працювати.


5

Спеціальні атрибути - це ті, які додаються від імені продавця. Наприклад, продавцю, можливо, потрібно буде додати спеціальні атрибути до об'єкта продукту з назвою "customizeable", в якому він хоче зберегти інформацію про те, що цей товар буде налаштований від третьої сторони чи ні.

Як спеціальні, так і атрибути розширення мають однакову функціональність (для збереження даних), але є значна різниця між спеціальними атрибутами та функціональними атрибутами розширення. напр

ми можемо додати додаткові критерії пошуку з атрибутом розширення, приєднавши його до будь-якої іншої таблиці БД. Ми можемо автентифікувати його, додавши в нього ACL. Давайте пояснимо докладно.

Перегляньте наступний фрагмент. Ви повинні створити /etc/extension_attributes.xml

 <config>
    <extension_attributes for="Path\To\Interface">
        <attribute code="name_of_attribute" type="datatype">
           <resources>
              <resource ref="permission"/>
           </resources>
           <join reference_table="" reference_field="" join_on_field="">
              <field>field1</field>
           <field>field2</field>
           </join>
        </attribute>
    </extension_attributes>
</config>

Пошук атрибутів розширення: у тезі приєднання ви можете визначити свою таблицю, з якою ви хочете приєднатись, та отримати дані з цієї таблиці. У атрибуті reference_table потрібно вказати ім'я таблиці, тоді як reference_field буде первинним ключем (перший ключ таблиці, для якого цей атрибут розширення створюється як у цьому прикладі продуктів), на який ви ставите своє відношення / приєднання. join_on_field, як підказує ім'я, буде другими таблицями ПК, проти яких ми хочемо записувати. Під тегами полів ви можете додати всі необхідні поля, фактично хочете отримати дані

Перевірка автентичності атрибуту розширення: Ви можете обмежити це значення атрибута конкретного розширення, використовуючи тег. Щоб зрозуміти це, Давайте маємо приклад. Скажімо, у нас є більше одного атрибута розширення для продуктів, і один з них говорить extra_special_price, що ми не хочемо показувати це всім користувачам. Ми можемо обмежити цей атрибут. Подивіться на наступний фрагмент.

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Api/etc/extension_attributes.xsd">
    <extension_attributes for="Magento\Catalog\Api\Data\ProductInterface">
        <attribute code="stock_item" type="Magento\CatalogInventory\Api\Data\StockItemInterface">
            <resources>
                <resource ref="Magento_CatalogInventory::cataloginventory"/>
            </resources>
        </attribute>
    </extension_attributes>
<attribute code="logo_size" type="string">           
        </attribute>
</config>

У цьому прикладі атрибут stock_item обмежений лише користувачами, які мають дозвіл Magento_CatalogInventory :: cataloginventory, тоді як logo_size не має жодних умов щодо нього.

Отже, якщо ви отримаєте об'єкт продукту (як ніколи через api чи з Інтернету), якщо поточний користувач має дозволи для каталогуінвентаризації, він отримає лише значення stock_items.

За межами цього питання, але подивіться, як ви створите атрибут за допомогою custom_extension за наступним посиланням дуже простим способом: Як створити extension_attributes

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.