Magento 2: Qual é a diferença entre atributos de extensão e atributos personalizados?


12

Tenho uma dúvida em mente qual é a diferença exata entre os Atributos de extensão e os Atributos personalizados ?

Qualquer um aqui que possa me dar algumas idéias ?!


@Mit, você pode me ajudar com isso ?!
anónimo

Não tenho 100% de certeza por que não estou respondendo à pergunta. Mas o meu ponto de vista tanto são os mesmos
Amit Bera

Respostas:


8

Atributos personalizados são os atributos adicionados para descrever uma entidade, como atributos do produto, atributos do cliente etc. Esses são um subconjunto de atributos do EAV.

Os atributos de extensão, por outro lado, geralmente são usados ​​para tipos de dados mais complexos, como adicionar dados complexos adicionais a uma entidade a partir de uma tabela externa personalizada.

Simplificando, os atributos personalizados estão em conformidade com os padrões EAV, enquanto os atributos de extensão são usados ​​para dados mais complexos que os atributos personalizados não podem manipular.


5

Atributos personalizados são aqueles adicionados em nome de um comerciante. Por exemplo, um comerciante pode precisar adicionar atributos personalizados à entidade do produto denominada 'personalizável', na qual deseja salvar as informações de que este produto será personalizado de terceiros ou não.

Os atributos personalizados e de extensão têm um pouco da mesma funcionalidade (para manter os dados), mas há uma diferença considerável entre os atributos personalizados e a funcionalidade de atributos de extensão. por exemplo

podemos adicionar critérios de pesquisa extras com o atributo de extensão juntando-o a qualquer outra tabela de banco de dados. Podemos autenticá-lo adicionando ACL nele. Vamos explicar em pequenos detalhes.

Dê uma olhada no seguinte trecho. Você deve criar um /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>

Pesquisa de atributos de extensão: Na tag de junção, você pode definir sua tabela referente à qual deseja ingressar e obter dados dessa tabela. No atributo reference_table, você deve fornecer o nome da tabela, enquanto reference_field será a chave primária (a primeira chave da tabela para a qual esse atributo de extensão é criado como neste exemplo de produtos) na qual você coloca sua relação / associação. join_on_field como sugestão de nome será a segunda tabela PK na qual queremos registros. Em tags de campos, você pode adicionar todos os campos obrigatórios, na verdade, deseja obter dados

Autenticação de atributo de extensão: você pode restringir esse valor de atributo de extensão específico usando a tag Para entender isso Vamos dar um exemplo. Digamos que temos mais de um atributo de extensão para produtos e um deles diga extra_special_price que não queremos mostrá-lo a todos os usuários. Nós podemos restringir esse atributo. Dê uma olhada no seguinte trecho.

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

Neste exemplo, o atributo stock_item é restrito apenas aos usuários que têm a permissão Magento_CatalogInventory :: cataloginventory, enquanto o logo_size não possui nenhuma condição.

Portanto, agora, se você obtiver o objeto do produto (da maneira que for, via API ou pela Web), se o usuário atual tiver permissões para cataloginventory, ele obterá apenas os valores de stock_items.

Fora do escopo desta pergunta, mas veja como você criará o atributo usando custom_extension no seguinte link de maneira muito simples: Como criar extension_attributes

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.