Skip to content

[Form] Keep submitted values when keep_as_list option of collection type is enabled #59910

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

kells64000
Copy link

Q A
Branch? 7.2
Bug fix? yes
New feature? no
Deprecations? no
Issues Fix #57430
License MIT

When the keep_as_list option of CollectionType is true, its entries lose their values when re-displaying the form with submitted data.

This fix only concerns the 2nd point of the linked issue.

@carsonbot
Copy link

Hey!

I see that this is your first PR. That is great! Welcome!

Symfony has a contribution guide which I suggest you to read.

In short:

  • Always add tests
  • Keep backward compatibility (see https://symfony.com/bc).
  • Bug fixes must be submitted against the lowest maintained branch where they apply (see https://symfony.com/releases)
  • Features and deprecations must be submitted against the 7.3 branch.

Review the GitHub status checks of your pull request and try to solve the reported issues. If some tests are failing, try to see if they are failing because of this change.

When two Symfony core team members approve this change, it will be merged and you will become an official Symfony contributor!
If this PR is merged in a lower version branch, it will be merged up to all maintained branches within a few days.

I am going to sit back now and wait for the reviews.

Cheers!

Carsonbot

@OskarStark OskarStark changed the title [Form] Keep submitted values when keep_as_list option of collection type is enabled [Form] Keep submitted values when keep_as_list option of collection type is enabled Mar 5, 2025
@kells64000 kells64000 force-pushed the fix/form-collection-type-keepaslist-keep-submitted-data branch from 2dde5d2 to 4619258 Compare March 5, 2025 08:14
@kells64000
Copy link
Author

Friendly ping for a review @xabbuh @yceruto 🙏

@welcoMattic welcoMattic self-requested a review May 26, 2025 09:43
@kells64000
Copy link
Author

@xabbuh Does this sound good to you?

xabbuh added a commit that referenced this pull request Jun 10, 2025
…eCat)

This PR was merged into the 7.2 branch.

Discussion
----------

[Form] Fix `keep_as_list` when data is not an array

| Q             | A
| ------------- | ---
| Branch?       | 7.2
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Issues        | Fix part of #57430
| License       | MIT

The `CollectionType` handles not only arrays but also `ArrayAccess&Traversable`. However when setting its `keep_as_list` option, `array_values` would then be called and crash.

To avoid this, this PR reindexes the data by getting its keys and unsetting them. This is because unsetting in a loop can produce counter-intuitive results; e.g. [`ArrayIterator` would skip indexes](https://www.php.net/manual/en/arrayiterator.offsetunset.php).

Note that #57430 mentions another issue that would be fixed by #59910.

Commits
-------

6c964e7 [Form] Fix `keep_as_list` when data is not an array
@kells64000 kells64000 force-pushed the fix/form-collection-type-keepaslist-keep-submitted-data branch from e1c2d57 to 78214dc Compare June 11, 2025 08:36
…ype is enabled

Co-authored-by: mariecharles marie.charles@hetic.net
@kells64000 kells64000 force-pushed the fix/form-collection-type-keepaslist-keep-submitted-data branch from 78214dc to bac56de Compare June 11, 2025 08:44
@xabbuh
Copy link
Member

xabbuh commented Jun 11, 2025

Thank you @kells64000.

@xabbuh xabbuh merged commit ac794a7 into symfony:7.2 Jun 11, 2025
10 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy