Ich habe dem Kundenbearbeitungsformular im Magento-Administrator erfolgreich eine benutzerdefinierte Registerkarte mit einem Raster hinzugefügt. Die Registerkarte verwendet das <insertListing>
Tag in ihrem Layout-XML, um das Raster so zu rendern, wie es sollte. Wenn ich jedoch versuche, den Kunden zu speichern, wird bei der Formularüberprüfung ein Fehler ausgegeben. Ich habe dies getestet und es scheint, dass die validate()
Methode von tab_group.js
versucht, die Methode der Registerkarte aufzurufen validate
, zurückgegeben wird undefined
. Ich habe dies mit der Registerkarte "Guthaben speichern" verglichen, die mit den veralteten Rasterblöcken erstellt wurde, und für dieses Element wird ein leeres Array zurückgegeben. Gibt es etwas, das ich in meiner Konfiguration verpasst habe?
Error:
tab_group.js:68 Uncaught TypeError: Cannot read property 'valid' of undefined
at tab_group.js:68
at Function.findIndex (underscore.js:644)
at Function._.find._.detect (underscore.js:206)
at UiClass.validate (tab_group.js:67)
at Array.some (<anonymous>)
at UiClass.onValidate (tab_group.js:86)
at setNested (objects.js:43)
at Object.nested (objects.js:117)
at UiClass.set (element.js:305)
at updateValue (links.js:80)
(anonymous) @ tab_group.js:68
(anonymous) @ underscore.js:644
_.find._.detect @ underscore.js:206
validate @ tab_group.js:67
onValidate @ tab_group.js:86
setNested @ objects.js:43
nested @ objects.js:117
set @ element.js:305
updateValue @ links.js:80
(anonymous) @ events.js:87
trigger @ events.js:84
trigger @ events.js:162
validate @ form.js:333
save @ form.js:261
dispatch @ jquery.js:5226
elemData.handle @ jquery.js:4878
Registerkartenlayout XML ( view/base/ui_component/customer_form.xml
):
<?xml version="1.0"?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
<fieldset name="downloaded_blueprints" sortOrder="1000">
<settings>
<label translate="true">Downloaded Blueprints</label>
</settings>
<insertListing name="downloaded_blueprints_listing">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="source" xsi:type="string">blueprint_download</item>
</item>
</argument>
<settings>
<externalProvider>${ $.ns }.downloaded_blueprints_listing_data_source</externalProvider>
<autoRender>true</autoRender>
<dataScope>downloaded_blueprints_listing</dataScope>
<ns>downloaded_blueprints_listing</ns>
<exports>
<link name="customerId">${ $.externalProvider }:params.customer_id</link>
</exports>
<imports>
<link name="customerId">${ $.provider }:data.customer.entity_id</link>
</imports>
</settings>
</insertListing>
</fieldset>
</form>
Antworten:
Das ist der Fehler. Sie können also Mixin hinzufügen. Versuchen Sie es auf folgende Weise:
VendorName / ModuleName / view / adminhtml / requirejs-config.js
VendorName / ModuleName / view / adminhtml / web / js / mixin / form / components / tab_group.js
Entfernen Sie pub / static / * und stellen Sie statischen Inhalt bereit
quelle