Cosa significano "origine" e "dataScope" nel file di configurazione del componente Ui sotto forma di amministratore


11

Esistono nodi source e dataScope nella configurazione del componente UI del modulo di amministrazione Magento2. Cosa significano e come dovrebbero essere usati?

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

Risposte:


20

Per quanto riguarda il sourcenodo

Il sourcevalore del nodo corrisponde a una chiave nell'array di dati restituita dal \Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderInterface::getDatametodo del componente UI.


Ad esempio, consideriamo l' interfaccia utente customer_form .
File/Magento/Customer/view/base/ui_component/customer_form.xml

Da qui puoi vedere che per la maggior parte dei campi Magento utilizza il customervalore sotto il sourcenodo.
Ma aspetta, per i campi sotto il addressfieldset questo valore è cambiato in address.

Ora diamo una breve occhiata al DataProvider corrispondente per il componente UI customer_form .
La classe è \Magento\Customer\Model\Customer\DataProvider.

In sostanza, il metodo getDatadi questa classe è responsabile della restituzione dei dati che vengono compilati nei campi corrispondenti dichiarati dal componente customer_form .
Come puoi immaginare ora, il valore del cliente del sourcenodo ci dice di usare il valore memorizzato sotto il cliente chiave nel getDatametodo, mentre l' indirizzo source punta ai dati memorizzati sotto l' indirizzo chiave nei dati restituiti.

Sguardo più ravvicinato: <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>

Il campo sopra prende il suo valore di nome dai dati memorizzati sotto il cliente chiave restituito dal DataProvider del cliente .

Mentre nel caso seguente, l'origine del valore del nome è i dati memorizzati sotto l' indirizzo chiave : <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>


Per quanto riguarda il dataScopenodo

Il dataScopenodo consente di modificare un valore per l' attributo name del proprio input (campo), ad es. <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> L'input del risultato verrà visualizzato come segue:<input name="field_name"...>

Puoi anche scrivere i valori nel dataScopenodo separati da punti:, customer.address.firstnamein questo caso l'input del risultato è reso come segue: <input name="customer[address][firstname]"...> Qui è dove avviene la magia .

Inoltre, il dataScopenodo modifica il percorso del valore recuperato per un campo. Ciò si ottiene mediante la tecnica di collegamento .


1

questo significa che il tuo campo verrà inviato in POST come il tuo valore "dataScope", nella tua situazione, ad esempio, la richiesta di post sarà come ['title'] => var


Hai perso una domanda. Qual è il significato della fonte ? Se è un'origine dati, perché l'argomento è page , non page_listing_data_source ?
Key Shang
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.