[Feature] Make resource classes optional #1
Merged
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.
Resource classes are now optional. If one does not exist, the implementation falls-back to serializing resource using the schema. The serialization can be customised on the Eloquent schema using the
hidden()
andserializeUsing()
methods.The change also updates the
JsonApiResource
method signatures for theattributes
,relationships
,meta
, andlinks
methods so that they receive the HTTP request as the first (and only) parameter. This brings the implementation in line with Laravel's Eloquent resources, which receive the request to theirtoArray()
method. The slight difference is our implementation allows the request to benull
- this is to cover encoding resources outside of HTTP requests, e.g. queued broadcasting.This is a breaking change. Any existing
Resource
classes will either need to be deleted, or if keeping them the method signatures for theattributes
,relationships
,links
andmeta
methods need to be updated to add the request as the first parameter.