Ui bileşenlerini kullanarak bir form alanını salt okunur yapmak nasıl?


10

Benim Magento 2 modülünde bir form alanının bu ui-bileşen tanımı var.

    <field name="name">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="dataType" xsi:type="string">text</item>
                <item name="label" xsi:type="string" translate="true">Some Label</item>
                <item name="formElement" xsi:type="string">input</item>
                <item name="source" xsi:type="string">something_here</item>
                <item name="sortOrder" xsi:type="number">10</item>
                <item name="dataScope" xsi:type="string">name</item>
                <item name="notice" xsi:type="string" translate="true">Enter something here</item>
                <item name="validation" xsi:type="array">
                    <item name="required-entry" xsi:type="boolean">true</item>
                </item>
            </item>
        </argument>
    </field>

ve bunu salt okunur yapmaya çalışıyorum. Devre dışı değil. Sadece salt okunur.
Eklemeyi denedim:

<item name="readonly" xsi:type="boolean">true</item>  

yapılandırma bölümüne, ama belli ki başarısız oldu.
Alanı nasıl salt okunur yapabilirim? Alanı salt okunur yapabilir miyim?


"Devre dışı" ve "salt okunur" parametreleri arasındaki fark nedir? Bence her iki parametre de benzer şekilde çalışıyor.
Siarhey Uchukhlebau

1
Bildiğim kadarıyla devre dışı, alanın posta yoluyla gönderilmediği ve salt okunur olarak gönderildiği anlamına gelir. Planım, bir javascript aracılığıyla salt okunur alanın değerini değiştirmektir.
Marius

Elbette, ancak normal magento biçiminde (ui değil) "salt okunur" özniteliği, html özniteliği "devre dışı" anlamına gelir. Başka bir şekilde, özel bir bileşen veya özel bir komut dosyası kullanmalısınız, ui bileşenleri için "salt okunur" özniteliği bulunmamasına dikkat edin.
Siarhey Uchukhlebau

Şimdi cevabına sadık kalacağım. Umarım gelecekte bir alanı devre dışı bırakmam gerekmiyor.
Marius

FormElement öğesini giriş olarak bırakın ve metin öğesiTmpl öğesini şu şekilde ekleyin <item name = "elementTmpl" xsi: type = "string"> ui / form / element / text </item> Bakınız: magento.stackexchange.com/a/296735/14271
Magento_Newbie

Yanıtlar:


18

disabledParametreyi aşağıdaki gibi öğeye eklemeyi deneyin :

<field name="is_active">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="label" xsi:type="string">Status</item>
            <item name="dataType" xsi:type="string">number</item>
            <item name="formElement" xsi:type="string">checkbox</item>
            <item name="source" xsi:type="string">vendor_rules_rule_form.vendor_rules_rule_form_data_source.is_active</item>
            <item name="prefer" xsi:type="string">toggle</item>
            <item name="disabled" xsi:type="boolean">true</item>
            <item name="valueMap" xsi:type="array">
                <item name="true" xsi:type="string">1</item>
                <item name="false" xsi:type="string">0</item>
            </item>
            <item name="sortOrder" xsi:type="number">12</item>
        </item>
    </argument>
</field>

Sonuç readonly, normal form öğesinin parametresiyle benzer olmalıdır :

sonuç


1
Burada şaşkınım. işe yarıyor, ama bana yanlış geliyor. Alan devre dışı bırakılırsa, yine de POST yoluyla nasıl gönderilir? Her neyse, bu farklı bir soru. Şimdilik bunu kabul edeceğim.
Marius

5
@Marius, büyük olasılıkla arka uçtan bir form gönderildiğinde, gönderilen gerçek form değil, kaydet'i tıkladığınızda oluşturulan gizli alanlara sahip yeni bir formdur. Form, UI Bileşenleri XML dosyanızdaki alanlara ve işaretli alanlara göre oluşturulur data-form-part. Bir göz atın module-ui/view/base/web/js/form/form.js::initConfig(), validate()ve submit(). Ayrıca bak lib/mage/utils/misc.js::submit(). Bu birleşik, gerçekten gönderilen bedenin sonuna yeni bir form ekler.
Giel Berkers

@GielBerkers. Bu soruyu sorduktan sonra biraz araştırma yaptım ve açıkladığınız sonuca vardım. Haklısın. Gönderilen veriler bir formdan gelmez.
Marius

Ben de aynı sorunu gibi .. Yapılandırılabilir ürün için fiyat alanını etkinleştirmek istiyorum .. Burada link
Gopal Kacha

@Marius, Nasıl disabledyeni formda değil sadece düzenleme formunda alan yapmak için ?
Vinaya Maheshwari
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.