Я успешно добавил пользовательскую вкладку с сеткой в форму редактирования клиента в администраторе Magento. Вкладка использует <insertListing>
тег в своем макете XML для визуализации сетки, которая работает как надо. Когда я пытаюсь сохранить клиента, проверка формы выдает ошибку. Я отладил это, и кажется, что когда validate()
метод tab_group.js
пытается вызвать метод вкладки, validate
он возвращается undefined
. Я сравнил это с вкладкой Store Credit, которая была создана с использованием устаревших блоков Grid, и для этого элемента она возвращает пустой массив. Есть ли что-то, что я пропустил в моей конфигурации?
Ошибка:
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
Макет вкладки 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>
Ответы:
Это ошибка. Так что вы можете добавить миксин на него. Попробуйте следующим образом:
Имя_вендора / ModuleName / просмотр / adminhtml / requirejs-config.js
Имя_вендор / ModuleName / просмотр / adminhtml / веб / JS / Смешение / форма / компоненты / tab_group.js
Удалить pub / static / * и развернуть статический контент
источник