Wie kann ich eine ID aus meinem Formular an ein Listenraster zum Einfügen senden?
Was ich tun möchte, ist in meinem Formular lade ich ein Raster mit Insert Listing.
In diesem Raster möchte ich alle Ergebnisse mit der ID des Formulars.
<insertListing name="insertlisting_colors_one">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="autoRender" xsi:type="boolean">true</item>
<item name="imports" xsi:type="array">
<item name="spd_id" xsi:type="string">${ $.provider }:data.spd_id</item>
</item>
<item name="ns" xsi:type="string">colors_one_grid</item>
</item>
</argument>
</insertListing>
Unten ist der Code im Raster
<item name="filter_url_params" xsi:type="array">
<item name="color_amount" xsi:type="string">1</item>
<item name="spd_id" xsi:type="string">${ $.parentName }.spd_id</item>
</item>
magento2
uicomponent
Johan
quelle
quelle
Antworten:
Für das Hinzufügen einer Insert-Liste nach Parameter der übergeordneten UI-Komponente können wir den folgenden Code verwenden.
Das
externalProvider
Tag dient zum Hinzufügen eines Quellanbieters der Liste, die wir einfügen.Hier wird das
imports
Tag für den Importparameter der aktuellen Formulardatenquelle verwendetHier wird das
exports
Tag zum Exportieren der aktuellen Formulardatenparameter in die Liste verwendet, die eingefügt werden soll.Fügen Sie der aktuellen Sammlung einen Join mit der entsprechenden Spalte hinzu, damit der Datenanbieter der eingefügten Liste gefiltert werden kann.
Fügen Sie im Datenprovider Filter für diesen Parameter hinzu:
quelle
Sie müssen einen Wert für den Parameter render_url in der insertListing festlegen und diese URL dann in Ihrem Datenprovider aktualisieren. Diese Aktion muss zweimal ausgeführt werden, da Sie einen Datenprovider für Ihre Formularkomponente und einen anderen für die Auflistungskomponente benötigen.
1 - Richtige Deklaration der Komponente insertListing: (Vendor / Module / view / adminhtml / ui_component / vendor_module_form.xml)
2 - Fügen Sie dem Datenprovider der Formularseite die folgenden Änderungen hinzu. Dadurch wird die render_url geändert, indem der Parameter "id" am Ende der URL hinzugefügt wird:
(Vendor / Module / Ui / DataProvider / [Pfad zu Ihrem Datenprovider.php] )
Hinweis: Kopieren Sie nicht den gesamten unten stehenden Block in Ihren Datenprovider. Wählen Sie stattdessen die Teile aus, die in Ihrem Code fehlen
3 - Aktualisieren Sie Ihre Listungskomponente. Es muss einen updateUrl-Parameter in der DataSource-Komponente enthalten:
(Vendor / Module / view / adminhtml / ui_component / vendor_module_listing.xml)
4 - Aktualisieren Sie Ihren Listing Data Provider, um die updateUrl für die obige Listing-Komponente zu ändern
(Vendor / Module / Ui / DataProvider / [Pfad zu Ihrem LISTING-Datenprovider.php] )
Hinweis: Kopieren Sie nicht den gesamten unten stehenden Block in Ihren Datenprovider. Wählen Sie stattdessen die Teile aus, die in Ihrem Code fehlen
Lassen Sie mich wissen, wenn Sie noch Probleme haben. Ich kann möglicherweise nicht auf die Kommentare antworten, aber ich kann meine Antwort aktualisieren.
quelle