Tôi đã thêm thành công tab tùy chỉnh có lưới vào biểu mẫu Chỉnh sửa khách hàng trong quản trị viên Magento. Tab sử dụng <insertListing>
thẻ trong XML bố trí của nó để hiển thị lưới, hoạt động như bình thường. Tuy nhiên, khi tôi cố gắng cứu khách hàng, xác thực mẫu sẽ xuất hiện lỗi. Tôi đã gỡ lỗi này và có vẻ như khi validate()
phương thức tab_group.js
cố gắng gọi validate
phương thức của tab thì nó trả về undefined
. Tôi đã so sánh thẻ này với tab Tín dụng Store, được tạo bằng các khối Lưới không dùng nữa và đối với phần tử đó, nó trả về một mảng trống. Có cái gì tôi đã bỏ lỡ trong cấu hình của tôi?
Lỗi:
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
Bố cục tab 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>