Sobre el source
nodo
El source
valor del nodo corresponde a una clave en la matriz de datos devuelta por el \Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface::getData
método de su componente UI.
Por ejemplo, consideremos la interfaz de usuario customer_form .
Archivo/Magento/Customer/view/base/ui_component/customer_form.xml
Desde aquí puede ver que para la mayoría de los campos, Magento usa el customer
valor debajo del source
nodo.
Pero espere, para los campos debajo del address
conjunto de campos, este valor ha cambiado a address
.
Ahora echemos un vistazo al DataProvider correspondiente para el componente UI customer_form .
La clase es \Magento\Customer\Model\Customer\DataProvider
.
Aproximadamente, el método getData
de esta clase es responsable de devolver los datos que se rellenan en los campos correspondientes declarados por el componente customer_form .
Como puede adivinar ahora, el valor del nodo del clientesource
nos dice que usemos el valor almacenado bajo el cliente clave en el getData
método, mientras que la dirección source
apunta a los datos almacenados bajo la dirección clave en los datos devueltos.
Mirada más cercana:
<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>
El campo anterior toma su valor de nombre de los datos almacenados bajo la clave del cliente devuelta por el proveedor de datos del cliente .
Mientras que en el siguiente caso, la fuente del valor de nombre son los datos almacenados bajo la dirección clave :
<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>
Sobre el dataScope
nodo
El dataScope
nodo le permite cambiar un valor para el atributo de nombre de su entrada (campo), por ejemplo,
<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>
la entrada del resultado se representará de la siguiente manera:<input name="field_name"...>
También puede escribir los valores en el dataScope
nodo separados por puntos: customer.address.firstname
en este caso, la entrada del resultado se representa de la siguiente manera: <input name="customer[address][firstname]"...>
Aquí es donde ocurre la magia .
Además, el dataScope
nodo cambia la ruta del valor recuperado para un campo. Esto se logra mediante la técnica de enlace .