配置表单里加三行,保存后只剩两行,而且总是最后加的那一行不见。浏览器Network里POST其实有三行,说明问题不在按钮,而在dataProvider或backend model处理数组时把空索引、delete标记当成了无效行。

先看请求体中的字段层级,再在beforeSave只记录数组键名和行数。DynamicRows的record必须有正确 dataScope,每个field的scope也要与后端期望一致。

<item name="recordTemplate" xsi:type="string">record</item>
<item name="deleteProperty" xsi:type="string">delete</item>
<item name="deleteValue" xsi:type="boolean">true</item>

别用array_filter没回调

PHP的 array_filter($rows)会把值为0、"0"的合法字段也过滤掉;按必填键明确判断,并重新编号前先处理delete行。

回归准备一行值为0、一行空可选字段、一行正常值,再删除中间行。保存后顺序、值和删除结果都应该准确,不能只测全是字符串的漂亮数据。