fix: support multiselect in form data (#10676)

This commit is contained in:
Jay 2026-04-09 17:31:39 +02:00 committed by GitHub
parent 8b68491d04
commit 0912bde937
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 29 additions and 1 deletions

View File

@ -58,7 +58,9 @@ function formDataToJSON(formData) {
if (isLast) {
if (utils.hasOwnProp(target, name)) {
target[name] = [target[name], value];
target[name] = utils.isArray(target[name])
? target[name].concat(value)
: [target[name], value];
} else {
target[name] = value;
}

View File

@ -27,6 +27,32 @@ describe('formDataToJSON', () => {
});
});
it('should keep repeatable values flat for 3+ entries', () => {
const formData = new FormData();
formData.append('select3', '301');
formData.append('select3', '302');
formData.append('select3', '303');
expect(formDataToJSON(formData)).toEqual({
select3: ['301', '302', '303'],
});
});
it('should keep nested repeatable values flat for 3+ entries', () => {
const formData = new FormData();
formData.append('foo[bar]', '1');
formData.append('foo[bar]', '2');
formData.append('foo[bar]', '3');
expect(formDataToJSON(formData)).toEqual({
foo: {
bar: ['1', '2', '3'],
},
});
});
it('should convert props with empty brackets to arrays', () => {
const formData = new FormData();