关于source
节点
的source
节点的值对应于数据阵列中的键返回由\Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface::getData
你的UI组件的方法。
例如,让我们考虑customer_form UI。
文件/Magento/Customer/view/base/ui_component/customer_form.xml
从这里您可以看到,对于大多数字段,Magento都使用节点customer
下的值source
。
但是,请等待,因为该字段集下的字段address
已更改为address
。
现在让我们来简单的介绍一下相应的DataProvider的customer_form UI组件。
这个班是\Magento\Customer\Model\Customer\DataProvider
。
大致来说,getData
此类的方法负责返回填充到customer_form组件声明的相应字段中的数据。
正如你已经猜到了,对顾客的价值source
节点告诉我们使用密钥下存储的价值客户的getData
方法,而地址 source
指向数据的密钥下保存地址在返回的数据。
仔细看看:
<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>
上面的字段从存储在客户的DataProvider返回的关键客户下的数据中获取其名字值。
在以下情况下,名字值的来源是密钥地址下存储的数据:
<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>
关于dataScope
节点
该dataScope
节点允许您更改输入(字段)的name属性的值,例如,
<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>
结果输入将呈现如下:<input name="field_name"...>
您也可以将这些值写入dataScope
由点号(:)分隔的节点中customer.address.firstname
,在这种情况下,结果输入呈现如下:<input name="customer[address][firstname]"...>
这是发生魔术的地方。
另外,dataScope
节点改变所述检索到的值的路径为一个字段。这是通过链接技术实现的。