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 = [ ]): arrayParameters
| 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'
  ]
];If your site is set up to support multiple languages, you use custom language variables to translate the messages. Reference your translations using the t()-method. We recommend you set a fallback when using t().
$messages = [
    'fname' => t('fname', 'Please enter a valid first name'),
    'lname' => t('lname', 'Please enter a valid last name'),
    'email' => t('email', 'Please enter a valid email address')
];You can find an example of invalid() used to create pages from frontend in this recipe.