[12.x] Add wildcard pattern support to TrimStrings middleware #57982
+52
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds wildcard pattern support to the
TrimStringsmiddleware's$exceptarray, so we can skip trimming for nested request parameters likefoo.bar.*.name.Background
We need to trim strings globally, but some interfaces require preserving whitespace as valid input. The current
shouldSkipmethod usesin_array($key, $except, true)which only does exact matching, so you can't use patterns likeusers.*.emailto exclude nested fields.This was requested in #48212 and #50901.
Changes
Changed
shouldSkipto useStr::is()instead ofin_array(), which supports Laravel's wildcard patterns. This lets you useTrimStrings::except()to define exceptions for nested fields that need to preserve whitespace.Backward compatible - exact matches still work the same way.
Usage
You can use wildcard patterns in two ways:
Via
TrimStrings::except():Or in a custom middleware: