Về source
nút
Các source
tươ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::getData
phươ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 customer
giá trị dưới source
nú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 getData
củ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 source
nút cho chúng ta sử dụng giá trị được lưu trữ theo khách hàng chính trong getData
phươ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ề dataScope
nút
Các dataScope
nú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 dataScope
nú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, dataScope
nú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 .