Define input filtering, validation rules and type casting all in one place, and ensure that the input array has all the desired keys.
composer require nztim/input
Create a Processor class that extends NZTim\Input\BaseProcessor
and add overrides as follows:
protected function rules()
- returns an array of Laravel validation rules. This method is abstract so must be implemented.- The input data is normalized so that all fields in the rules array are certain to be present, and any other fields are filtered out
- Note: this means all valid fields must have a rule, even if it's empty.
protected function messages()
- returns an array of your validation message overrides.protected function casts()
- returns an array of fields to typecast.- Valid possibilities are
bool
,int
,float
, and a callable. E.g.['age' => 'int', 'subscribe' => 'bool', 'foo' => function($value) { //... }]
Then, to handle form input:
- Inject the Processor class into your controller.
- The request is used to set the input values.
$processor->setInput()
and$processor->removeInput()
can directly modify the input array as required.- Can be used to set input values not in the rules() array.
$processor->validate()
returns boolean success/failure. Arguments allow you to override/merge rules/messages as needed.$processor->getValidation()
returns the validation object, or false if validation was successful.$processor->getInput()
returns input casted to desired types, usegetInput(false)
to return uncasted input.
To handle other situations, inject the Processor class and use $processor->replaceInput($inputArray)
to set the entire input array at once.