ฉันจะเปลี่ยนคำกริยาที่มีอยู่ใน Magento 2 ได้อย่างไร


36

ฉันพยายามที่จะเปลี่ยนพฤติกรรมของ Modal (ไม่ Model) ในวีโอไอพี 2.
กิริยาช่วยในคำถามจะถูกประกาศในadvanced_inventory_modalmodule-catalog-inventory/view/adminhtml/ui_component/product_form.xml

ตอนนี้ฉันรู้ว่าฉันสามารถใช้ตัวดัดแปลงใน Product-form-modifier-pool:

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

... และใช้modifyMeta()-method ในตัวแก้ไขของฉันเพื่อจัดการการกำหนดค่า XML แต่ด้วยเหตุผลบางอย่าง modal สินค้าคงคลังไม่ปรากฏในข้อมูลที่ให้ไว้ที่นี่มันไม่ใช่sortOrderปัญหาที่เกี่ยวข้องเนื่องจากฉันตั้งไว้สูงแล้วsortOrder-attribute อาจมีสิ่งที่จะทำอย่างไรกับมัน

แล้วอะไรล่ะ ใครสามารถบอกฉันได้ว่าอะไรคือวิธีที่เหมาะสมในการปรับเปลี่ยนเนื้อหาของคำกริยาที่มีอยู่ใน Magento 2

แก้ไข:

ฉันพบวิธีแก้ปัญหาหรือวิธีแก้ปัญหา (ยังไม่แน่ใจ) เกี่ยวกับวิธีการบรรลุสิ่งที่ฉันพยายามบรรลุ ปรากฎว่าถ้าฉันตั้งไว้sortOrderที่10,000ฉันมีข้อมูลบางอย่างในmodifyMeta()วิธีการ -a ของฉันที่ฉันสามารถใช้:

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
นั่นเป็นวิธีเดียวที่จะปรับแต่งองค์ประกอบของ Ui แบบนี้ได้ ตัวดัดแปลง PHP
Toan Nguyen

2
@Giel Berkers คำถามของคุณดี แต่น่าเสียดายที่ฉันไม่รู้จะตอบยังไง โชคดีที่ฉันมีชื่อเสียงมากพอที่จะวางคำถามของคุณเพื่อดึงดูดคนที่รู้จักที่จะตอบคำถามของคุณ ชนิดของฉัน
แลกเปลี่ยนอำลากองซ้อนระหว่าง

คำตอบ:


1

มีสองวิธี:
1. สร้างโมเดลใหม่ (ผ่านการสร้างโมดูลใหม่ในพูลท้องถิ่น)
2. เพื่อแทนที่โมเดลที่มีอยู่ของโมดูลเฉพาะที่คุณต้องการ


0

คุณสามารถตั้งค่า<sequence>ในmodule.xmlของโมดูลCatalogInventory หลังจากนั้นคุณสามารถสร้างproduct_form.xmlภายใต้

แอป / รหัส/ โมดูล / ของคุณ /view/adminhtml/ui_component/product_form.xml

มีเส้นทางเดียวกับที่มันอยู่ในCatalogInventory สิ่งนี้จะแทนที่การกำหนดค่าที่คุณต้องการ

ฉันต้องการให้ตัวอย่าง แต่ฉันไม่รู้ว่าคุณต้องการอะไรที่นี่ PS คุณไม่จำเป็นต้องเพิ่มองค์ประกอบอื่น ๆ ที่คุณไม่จำเป็นต้องของคุณในXML พวกเขาจะถูกนำมาจากการกำหนดค่าแม่XML

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.