“源”和“数据范围”在管理表单Ui组件配置文件中是什么意思


11

Magento2管理表单UI组件配置中有sourcedataScope节点。它们是什么意思,应该如何使用?

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

Answers:


20

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

现在让我们来简单的介绍一下相应的DataProvidercustomer_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节点改变所述检索到的值的路径为一个字段。这是通过链接技术实现的。


1

这意味着您的字段将在POST中发送,例如您的“ dataScope”值,在您所处的情况下,例如,发布请求将像 ['title'] => var


您错过了一个问题。什么意思来源?如果是数据源,为什么参数是page而不是page_listing_data_source
关键尚
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.