Magento 2: Qual è la differenza tra gli attributi di estensione e gli attributi personalizzati?


13

Ho in mente qual è la differenza esatta tra gli attributi di estensione e gli attributi personalizzati ?

Qualcuno qui che può darmi qualche idea ?!


@Amit, mi potete aiutare con questo ?!
anonimo

Non sono sicuro al 100% di questo perché non sto rispondendo alla domanda. Ma il mio punto di vista è lo stesso
Amit Bera

Risposte:


8

Gli attributi personalizzati sono gli attributi aggiunti per descrivere un'entità, come attributi del prodotto, attributi del cliente ecc. Questi sono un sottoinsieme di attributi EAV.

Gli attributi di estensione invece vengono generalmente utilizzati per tipi di dati più complessi come l'aggiunta di dati complessi aggiuntivi in ​​un'entità da una tabella esterna personalizzata.

In poche parole, gli attributi personalizzati sono conformi agli standard EAV mentre gli attributi di estensione vengono utilizzati per dati più complessi che gli attributi personalizzati non possono gestire.


5

Gli attributi personalizzati sono quelli aggiunti per conto di un commerciante. Ad esempio, un commerciante potrebbe aver bisogno di aggiungere attributi personalizzati all'entità prodotto denominata "personalizzabile" in cui desidera salvare le informazioni che questo prodotto verrà personalizzato da terze parti o meno.

Sia gli attributi personalizzati che quelli di estensione hanno un po 'la stessa funzionalità (per conservare i dati) ma ci sono notevoli differenze tra gli attributi personalizzati e la funzionalità degli attributi di estensione. per esempio

possiamo aggiungere ulteriori criteri di ricerca con attributo di estensione unendoli a qualsiasi altra tabella DB. Possiamo autenticarlo aggiungendo ACL in esso. Spieghiamo in dettaglio.

Dai un'occhiata al seguente frammento. È necessario creare un file /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>

Ricerca degli attributi di estensione: nel tag join è possibile definire la propria tabella relativa alla quale si desidera unirsi e ottenere dati da questa tabella. Nell'attributo reference_table devi dare il nome della tabella mentre reference_field sarà la chiave primaria (la prima chiave della tabella per la quale questo attributo di estensione crea come in questo esempio di prodotti) su cui metti la tua relazione / join. join_on_field come suggerisce il nome saranno le seconde tabelle PK rispetto alle quali vogliamo i record. Sotto i tag dei campi è possibile aggiungere tutti i campi richiesti in realtà si desidera ottenere dati

Autenticazione dell'attributo estensione: puoi limitare questo particolare valore dell'attributo estensione usando il tag Per capire questo Facciamo un esempio. Supponiamo di avere più di un attributo di estensione per i prodotti e uno di questi afferma che il prezzo extra_special_price non vogliamo mostrarlo a tutti gli utenti. Possiamo limitare questo attributo. Dai un'occhiata al seguente frammento.

<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>

In questo esempio, l'attributo stock_item è limitato solo agli utenti che dispongono dell'autorizzazione Magento_CatalogInventory :: cataloginventory mentre logo_size non ha alcuna condizione.

Quindi ora se ottieni un oggetto prodotto (in qualunque modo tramite api o dal web) se l'utente attuale ha i permessi per cataloginventory otterrà solo valori stock_items.

Al di fuori di questa domanda, ma dai un'occhiata a come creerai l'attributo usando custom_extension nel seguente link in modo molto semplice: Come creare extension_attributes

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.