Dữ liệu của nguồn và dữ liệu của Cameron có nghĩa là gì trong hình thức quản trị tập tin cấu hình thành phần Ui


11

Có các nút nguồndataScope trong cấu hình thành phần UI của quản trị viên Magento2. Chúng có ý nghĩa gì và chúng được sử dụng như thế nào?

<field name="title">
    <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">Page Title</item>
            <item name="formElement" xsi:type="string">input</item>
            <item name="source" xsi:type="string">page</item>
            <item name="sortOrder" xsi:type="number">20</item>
            <item name="dataScope" xsi:type="string">title</item>
            <item name="validation" xsi:type="array">
                <item name="required-entry" xsi:type="boolean">true</item>
            </item>
        </item>
    </argument>
</field>

Câu trả lời:


20

Về sourcenút

Các sourcetương ứng với giá trị của nút để chìa khóa trong mảng dữ liệu trả về bởi các \Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface::getDataphương pháp thành phần giao diện người dùng của bạn.


Ví dụ, chúng ta hãy xem xét các customer_form UI.
Tập tin/Magento/Customer/view/base/ui_component/customer_form.xml

Từ đây bạn có thể thấy rằng đối với hầu hết các trường Magento sử dụng customergiá trị dưới sourcenút.
Nhưng chờ đã, đối với các trường trong bộ trường address, giá trị này đã thay đổi thành address.

Bây giờ chúng ta hãy xem sơ qua về DataProvider tương ứng cho thành phần UI của khách hàng .
Cả lớp là thế \Magento\Customer\Model\Customer\DataProvider.

Một cách thô bạo, phương thức getDatacủa lớp này chịu trách nhiệm trả về dữ liệu được điền vào các trường tương ứng được khai báo bởi thành phần customer_form .
Như bạn có thể đoán bây giờ, giá trị khách hàng của sourcenút cho chúng ta sử dụng giá trị được lưu trữ theo khách hàng chính trong getDataphương thức, trong khi địa chỉ source trỏ đến dữ liệu được lưu trữ dưới địa chỉ khóa trong dữ liệu được trả về.

Nhìn kỹ hơn: <field name="firstname" formElement="input"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> item name="source" xsi:type="string">customer</item> </item> </argument> </field>

Trường ở trên lấy giá trị tên của nó từ dữ liệu được lưu trữ dưới khách hàng chính được DataProvider của khách hàng trả về .

Trong trường hợp dưới đây, nguồn của giá trị tên gọi là dữ liệu được lưu trữ dưới địa chỉ khóa : <field name="firstname" formElement="input"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="source" xsi:type="string">address</item> </item> </argument> </field>


Về dataScopenút

Các dataScopenút cho phép bạn thay đổi giá trị cho các tên thuộc tính của đầu vào của bạn (lĩnh vực), ví dụ, <field name="title"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="dataType" xsi:type="string">text</item> <item name="formElement" xsi:type="string">input</item <item name="dataScope" xsi:type="string">field_name</item> </item> </argument> </field> các kết quả đầu vào sẽ được trả lại như sau:<input name="field_name"...>

Bạn cũng có thể viết các giá trị vào dataScopenút được phân tách bằng dấu chấm : customer.address.firstname, trong trường hợp này, kết quả đầu vào được hiển thị như sau: <input name="customer[address][firstname]"...> Đây là nơi phép màu xảy ra .

Ngoài ra, dataScopenút thay đổi đường dẫn của giá trị được truy xuất cho một trường. Điều này đạt được bằng các kỹ thuật liên kết .


1

điều này có nghĩa là trường của bạn sẽ được gửi trong POST như giá trị "dataScope" của bạn, trong trường hợp của bạn, ví dụ như yêu cầu bài đăng sẽ như thế nào ['title'] => var


Bạn đã bỏ lỡ một câu hỏi. Ý nghĩa của nguồn là gì? Nếu đó là nguồn dữ liệu, tại sao đối số là trang chứ không phải page_listing_data_source ?
Khóa Shang
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.