Magento 2: Uzantı Özellikleri ile Özel Özellikler arasındaki fark nedir?


14

Aklımda, Uzantı Özellikleri ile Özel Özellikler arasındaki kesin fark nedir?

Burada bana fikir verebilecek biri var mı?


@Amit, Bana bu konuda yardım edebilir misin?!
anonim

% 100 emin değilim neden soruya cevap vermiyorum. Ama benim bakış
Amit Bera

Yanıtlar:


8

Özel özellikler, bir varlığı tanımlamak için eklenen, ürün özellikleri, müşteri özellikleri vb. Özelliklerdir. Bunlar, EAV özelliklerinin bir alt kümesidir.

Öte yandan, uzantı öznitelikleri genellikle özel bir harici tablodan bir varlığa ek karmaşık veriler eklemek gibi daha karmaşık veri türleri için kullanılır.

Basitçe ifade etmek gerekirse, özel özellikler EAV standartlarına uygundur, oysa uzantı özellikleri, özel özelliklerin işleyemediği daha karmaşık veriler için kullanılır.


5

Özel özellikler , bir satıcı adına eklenen özelliklerdir . Örneğin, bir satıcının 'özelleştirilebilir' adlı ürün varlığına, bu ürünün 3. taraftan özelleştirilip özelleştirilmeyeceği bilgisini kaydetmek istediği özel özellikler eklemesi gerekebilir.

Hem özel hem de uzantı öznitelikleri (verileri tutmak için) biraz aynı işleve sahiptir, ancak özel öznitelikler ve uzantı öznitelikleri işlevselliği arasında önemli bir fark vardır. Örneğin

başka bir DB tablosuna katılarak uzantı özelliğine sahip ek arama ölçütleri ekleyebiliriz. İçine ACL ekleyerek doğrulayabiliriz. Şimdi biraz açıklayalım.

Lütfen aşağıdaki snippet'e bir göz atın. Bir /etc/extension_attributes.xml oluşturmanız gerekir

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

Uzantı niteliklerini arama: Birleştirme etiketinde, katılmak istediğiniz tabloyu tanımlayabilir ve bu tablodan veri alabilirsiniz. Gelen reference_table özniteliği sen ise tablo adını vermek zorunda reference_field hangi size ilişkiyi koymak birincil anahtar (bu uzantı özniteliği bu örnekte ürünleri gibi oluşturduğunuz için ilk tablo anahtarı) olacak / katılmak. join_on_field adından da anlaşılacağı gibi, kayıtlarını istediğimiz ikinci PK tabloları olacaktır. Alan etiketleri altına veri almak istediğiniz tüm zorunlu alanları ekleyebilirsiniz

Uzantı özniteliği kimlik doğrulaması: etiketi kullanarak bu belirli uzantı özniteliği değerini kısıtlayabilirsiniz. Bunu anlamak için Bir örnek verelim. Diyelim ki ürünler için birden fazla uzantı özelliğimiz var ve bunlardan biri extra_special_price'i bunu tüm kullanıcılara göstermek istemediğimizi söylüyor. Bu özelliği kısıtlayabiliriz. Aşağıdaki kod parçasına bir göz atın.

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

Bu örnekte, stock_item özniteliği sadece Magento_CatalogInventory :: cataloginventory iznine sahip olan kullanıcılarla sınırlıdır, ancak logo_size üzerinde herhangi bir koşul yoktur.

Bu nedenle, şimdi mevcut nesne kataloginventory için izinlere sahipse ürün nesnesi (api veya web üzerinden herhangi bir şekilde) alırsanız, yalnızca stock_items değerleri alır.

Bu sorunun kapsamı dışındadır, ancak aşağıdaki bağlantıda custom_extension kullanarak özniteliği nasıl oluşturacağınıza çok basit bir şekilde göz atın: extension_attributes nasıl oluşturulur

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.