Làm thế nào để tạo một trường biểu mẫu chỉ đọc bằng cách sử dụng các thành phần ui?


10

Tôi có định nghĩa thành phần ui này của trường biểu mẫu Trong mô-đun Magento 2 của tôi.

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

và tôi đang cố gắng để làm cho nó chỉ đọc. Không bị vô hiệu hóa. Chỉ cần đọc.
Tôi đã thử thêm:

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

đến phần cấu hình, nhưng rõ ràng là tôi đã thất bại.
Làm thế nào tôi có thể làm cho lĩnh vực chỉ đọc? Tôi có thể làm cho lĩnh vực này chỉ đọc?


Sự khác biệt giữa các tham số "bị vô hiệu hóa" và "chỉ đọc" là gì? Theo tôi cả hai tham số hoạt động theo một cách tương tự.
Siarhey Uchukhlebau

1
Từ những gì tôi biết, bị vô hiệu hóa có nghĩa là trường không được gửi qua bài viết và chỉ đọc được gửi. Kế hoạch của tôi là sửa đổi giá trị của trường chỉ đọc thông qua một số javascript.
Marius

Chắc chắn, nhưng ở dạng magento thông thường (không phải ui), thuộc tính "readonly" có nghĩa là thuộc tính html "bị vô hiệu hóa". Theo cách khác, bạn nên sử dụng một thành phần tùy chỉnh hoặc tập lệnh tùy chỉnh, vì thuộc tính "readonly" nonexists cho các thành phần ui.
Siarhey Uchukhlebau

Tôi sẽ chỉ gắn bó với câu trả lời của bạn bây giờ. Tôi chỉ hy vọng tôi không thực sự cần phải làm cho một lĩnh vực bị vô hiệu hóa trong tương lai.
Marius

Để lại formE bổ sung làm đầu vào và thêm phần tử văn bản như thế này <item name = "ElementTmpl" xsi: type = "string"> ui / form / Element / text </ item> Tham khảo: magento.stackexchange.com/a/296735/14271
Magento_Newbie

Câu trả lời:


17

Cố gắng thêm disabledtham số cho phần tử như thế này:

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

Kết quả phải tương tự với readonlytham số cho phần tử biểu mẫu thông thường:

kết quả


1
Tôi hoang mang ở đây. nó hoạt động, nhưng nó có vẻ sai với tôi. Nếu trường bị vô hiệu hóa, làm thế nào đến vẫn được gửi qua POST? Dù sao, đây là một câu hỏi khác nhau. Bây giờ tôi sẽ chấp nhận điều này.
Marius

5
@Marius Điều này rất có thể bởi vì khi một biểu mẫu được gửi từ phụ trợ, nó không phải là biểu mẫu thực sự được gửi mà là một biểu mẫu mới với các trường ẩn được tạo khi bạn nhấp vào lưu. Biểu mẫu được tạo theo các trường trong tệp XML Thành phần giao diện người dùng của bạn và các trường được đánh dấu data-form-part. Hãy nhìn vào module-ui/view/base/web/js/form/form.js::initConfig(), validate()submit(). Cũng nhìn vào lib/mage/utils/misc.js::submit(). Những kết hợp này thêm một hình thức mới ở cuối cơ thể thực sự được đệ trình.
Giel Berkers

@GielBerker. Tôi đã thực hiện một số nghiên cứu sau khi đặt câu hỏi này và tôi đã đi đến kết luận giống như bạn đã giải thích. Bạn đúng rồi. Các dữ liệu được gửi không đến từ một hình thức.
Marius

Tôi cũng phải gặp vấn đề tương tự .. Tôi muốn kích hoạt trường giá cho sản phẩm có thể định cấu hình .. Ở đây tôi đã giải thích liên kết
Gopal Kacha

@Marius, Làm thế nào để tạo trường disabledchỉ ở dạng chỉnh sửa không ở dạng mới?
Vinaya Maheshwari
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.