Magento 2'deki mevcut modeli nasıl değiştirebilirim?


36

Bir Modal'in (Model değil) davranışını Magento 2'de değiştirmeye çalışıyorum.
Söz konusu modal advanced_inventory_modal, ilan edildi module-catalog-inventory/view/adminhtml/ui_component/product_form.xml.

Artık ürün-değiştirici-havuzunda bir Değiştirici kullanabileceğimi biliyorum:

<virtualType name="Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Pool">
    <arguments>
        <argument name="modifiers" xsi:type="array">
            <item name="hf_quantity" xsi:type="array">
                <item name="class" xsi:type="string">Vendor\Module\Ui\DataProvider\Product\Form\Modifier\Quantity</item>
                <item name="sortOrder" xsi:type="number">100</item>
            </item>
        </argument>
    </arguments>
</virtualType>

... ve modifyMeta()XML yapılandırmasını değiştirmek için değiştiricimdeki -metod komutunu kullanın , ancak bir nedenden dolayı, envanter modeli burada sağlanan verilerde mevcut değildir.sortOrderZaten böyle yüksek bir seviyeye koyduğumdan beri de alakalı bir problem değil .sortOrder-Attribute bununla bir şey olabilir.

Peki ne verir? Birisi bana Magento 2'deki mevcut bir modelin içeriğini değiştirmenin doğru yolunun ne olduğunu söyleyebilir mi?

Düzenle:

Elde etmeye çalıştığım şeye nasıl ulaşacağım konusunda bir çözüm veya geçici çözüm buldum (henüz emin değilim). Görünüşe göre 10000 olarak ayarlarsam sortOrder, -a yönteminde kullanabileceğim bazı veriler var :modifyMeta()

public function modifyMeta(array $meta)
{
    if ($path = $this->arrayManager->findPath('quantity_and_stock_status_qty', $meta, null, 'children')) {
        $this->arrayManager->remove(
            $path . '/children/qty/arguments/data/config/validation/validate-digits',
            $meta
        );
    }

    if ($path = $this->arrayManager->findPath('advanced_inventory_modal', $meta)) {
        $meta = $this->arrayManager->merge(
            $path . '/children/stock_data/children/qty/arguments/data/config',
            $meta,
            ['validation' => ['validate-digits' => false]]
        );
    }

    return $meta;
}

Note that the `advanced_inventory_modal` node is not yet complete, but my best guess is that the later addition of the modal merges with these settings, but doesn't override it. Could be wrong though, perhaps someone could share some more light on how this mechanism works?

1
Bu tür bir UI bileşeni türünü özelleştirmenin tek yolu bu. PHP değiştiricileri.
Toan Nguyen,

2
@Gel Berkers Sorunuz iyi ama maalesef nasıl cevap vereceğimi bilmiyorum. Neyse ki, sorunuza cevap vermeyi bilen birisini çekmek için sorunuza ödül bulmak için yeterli üne sahibim. Benim tarzım.
Elveda Yığın Borsası

Yanıtlar:


1

İki yol vardır:
1. Yeni bir model oluşturun (yerel havuzda yeni modül oluşturma yoluyla)
2. İstediğiniz modülün mevcut modelini geçersiz kılmak için.


0

Ayarlayabilirsiniz <sequence>içinde module.xml arasında CatalogInventory modülü. Bundan sonra, altında product_form.xml oluşturabilirsiniz

app / code / Sizin / Modülünüz / görünüm /adminhtml/ui_component/product_form.xml

CatalogInventory'deki ile aynı yolla . Bu, ihtiyacınız olan yapılandırmanın yerine geçecektir.

Herhangi bir örnek vermek istiyorum ama burada neye ihtiyacınız olduğunu bilmiyorum. PS size de gerekmez diğer öğeleri eklemek gerekmez XML . ebeveyn xml yapılandırmasından alınacaktır .

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.