Custom key support for implicit enum route binding #41776
Closed
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 introduces "custom key" support for implicitly bound enums in routes, similarly to Eloquent models.
Rationale
An enum is often used as a model attribute to simplify DX while still efficiently persisting integers in the database. There are ample of situations where a model's enum would be included in a route as well. Currently Laravel is only able to implicitly resolve string-backed enum route bindings, but that sort of contradicts the aforementioned use case.
One could of course go with explicitly defining such an enum route binding. But since implicit model binding features a custom route key I figured a similar feature would fit the enum binding as well.
Considerations
The implementation of the desired "key" method is not airtight. It's up to the developer to define a value for every enum case. However, this can also be seen as an opportunity: a specific case can simply be omitted to make the binding return a 404 for that case...
Original PR for implicit enum binding
#40281