invalid()
Runs a number of validators on a set of data and checks if the data is invalid
invalid(array $data = [ ], array $rules = [ ], array $messages = [ ]): array
Parameters
Name | Type | Default |
---|---|---|
$data | array |
[ ] |
$rules | array |
[ ] |
$messages | array |
[ ] |
Return type
array
Examples
$data = [
'username' => 'Homer',
'fname' => 'Homer',
'lname' => 'Simpson',
'email' => 'home@simpsonscom',
'gender' => 'male'
];
$rules = [
'username' => ['required'],
'fname' => ['required', 'minLength' => 3],
'lname' => ['required', 'maxLength' => 30],
'email' => ['required', 'email'],
'gender' => ['in', [['male', 'female', 'non-binary', 'not specified']]]
];
$messages = [
'fname' => 'Please enter a valid first name',
'lname' => 'Please enter a valid last name',
'email' => 'Please enter a valid email address'
];
if($invalid = invalid($data, $rules, $messages)) {
dump($invalid);
} else {
dump('Nice data!');
}
You can change these rules based on the type of data you want to obtain and use Kirby's validators or your own custom validators.
The syntax for the $rules
array supports the following variants:
- To use a validator without parameters, use the validator name as the array value:
['required']
- To pass additional parameters to a validator, use the validator's name as the array key, and the parameter(s) as the value.
- Scalar values can be passed directly:
['maxLength' => 20]
- You can pass multiple parameters to the validator as an array:
['between' => [10, 100]]
- To pass an array as a single parameter, use a nested array:
['in' => [['foo', 'bar']]]
- Scalar values can be passed directly:
You can also separately define a message for each validation rule:
$messages = [
'fname' => 'Please enter a valid first name',
'lname' => 'Please enter a valid last name',
'email' => [
'Please enter an email address',
'The email address is invalid'
]
];
You can find an example of invalid()
used to create pages from frontend in this recipe.