[4.2][Feature] Custom save request stripping #3987
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.
Fixes #3792
Depends on #3986 (that one needs to be merged into 4.2 first)
WHY
BEFORE - What was wrong? What was happening before this PR?
As reported in #3792 , if a dev wanted to strip the request in a different way than what
saveAllInputsExcept
allowed, it was difficult, they'd probably have to override thestore()
andupdate
methods.We were basically providing three options for
saveAllInputsExcept
:false
ornull
=> save ONLY inputs that have fields onpage['one_item', 'another_item']
=> save all input EXCEPT the ones in this arrayThis was very limiting.
AFTER - What is happening after this PR?
Instead of defining an
array
, you can define aclosure
where you do whatever you want to the$request
and return an array of inputs you want saved.HOW
How did you achieve that, in technical terms?
I've
saveAllInputsExcept
tostrippedRequest
null
,true
orclosure
Is it a breaking change or non-breaking change?
Fo shizzle my nizzle.
How can we test the before & after?
Can't really test the "before", as it was working, but had limited capacity.
To test the "after" you can:
config/backpack/operations/create.php
:dd($crud->getStrippedRequest())
inCreateOperation.php::store()
, right before the call to$this->crud->create()
(line 77).This is ready to test & review. But before merging it: