mirror of
https://github.com/Respect/Validation.git
synced 2026-03-16 23:35:45 +01:00
Now empty values are again allowed in FilteredArray-style validators. To solve the issue with negation, a Result attribute was added to signal indeciseveness (when a result cannot be reliably inverted). On such cases, we consider that result to be valid. For example, `v::not(v::min(v::equals(10)))` says "The lowest value of the iterable input should not be equal 10". If the input is empty, we cannot decide whether its minimum is equal to 10 or not, so the validator essentially becomes a null-op. Users that want to ensure these validators have a valid decidable target must use it in combination with `Length` or other similar validators to achieve the same result.
2.8 KiB
2.8 KiB
Each
Each(Validator $validator)
Validates whether each value in the input is valid according to another validator.
$releaseDates = [
'validation' => '2010-01-01',
'template' => '2011-01-01',
'relational' => '2011-02-05',
];
v::each(v::dateTime())->assert($releaseDates);
// Validation passes successfully
This validator is similar to All, but while All displays a single message
generic to all failed entries, Each will display a message for each failed
entry instead.
v::each(v::startsWith('2010'))->assert($releaseDates);
// → - Each item in `["validation": "2010-01-01", "template": "2011-01-01", "relational": "2011-02-05"]` must be valid
// → - `.template` must start with "2010"
// → - `.relational` must start with "2010"
v::named('Release Dates', v::each(v::startsWith('2010')))->assert($releaseDates);
// → - Each item in Release Dates must be valid
// → - `.template` must start with "2010"
// → - `.relational` must start with "2010"
You can also validate array keys combining this validator with Call:
v::call('array_keys', v::each(v::stringType()))->assert($releaseDates);
// Validation passes successfully
Note
This validator will pass if the input is empty. Use Length with [GreaterThan][GreaterThan.md] to perform a stricter check:
v::each(v::equals(10))->assert([]);
// Validation passes successfully
v::length(v::greaterThan(0))->each(v::equals(10))->assert([]);
// → The length of `[]` must be greater than 0
Templates
Each::TEMPLATE_STANDARD
| Mode | Template |
|---|---|
default |
Each item in {{subject}} must be valid |
inverted |
Each item in {{subject}} must be invalid |
Template placeholders
| Placeholder | Description |
|---|---|
subject |
The validated input or the custom validator name (if specified). |
Categorization
- Arrays
- Nesting
- Transformations
Changelog
| Version | Description |
|---|---|
| 3.0.0 | Rejected stdClass, non-iterables |
| 2.0.0 | Remove support for key validation |
| 0.3.9 | Created |