tao-test/app/vendor/respect/validation/docs/rules/KeyValue.md

65 lines
2.0 KiB
Markdown
Raw Normal View History

2022-08-29 20:14:13 +02:00
# KeyValue
- `keyValue(string $comparedKey, string $ruleName, string $baseKey)`
Performs validation of `$comparedKey` using the rule named on `$ruleName` with
`$baseKey` as base.
Sometimes, when validating arrays, the validation of a key value depends on
another key value and that may cause some ugly code since you need the input
before the validation, making some checking manually:
```php
v::key('password')->check($_POST);
v::key('password_confirmation', v::equals($_POST['password']))->check($_POST);
```
The problem with the above code is because you do not know if `password` is a
valid key, so you must check it manually before performing the validation on
`password_confirmation`.
The `keyValue()` rule makes this job easier by creating a rule named on
`$ruleName` passing `$baseKey` as the first argument of this rule, see an example:
```php
v::keyValue('password_confirmation', 'equals', 'password')->validate($_POST);
```
The above code will result on `true` if _`$_POST['password_confirmation']` is
[equals](Equals.md) to `$_POST['password']`_, it's the same of:
See another example:
```php
v::keyValue('state', 'subdivisionCode', 'country')->validate($_POST);
```
The above code will result on `true` if _`$_POST['state']` is a
[subdivision code](SubdivisionCode.md) of `$_POST['country']`_:
This rule will invalidate the input if `$comparedKey` or `$baseKey` don't exist,
or if the rule named on `$ruleName` could not be created (or don't exist).
When using `assert()` or `check()` methods and the rule do not pass, it overwrites
all values in the validation exceptions with `$baseKey` and `$comparedKey`.
```php
v::keyValue('password_confirmation', 'equals', 'password')->check($input);
```
The above code may generate the message:
```
password_confirmation must be equals "password"
```
***
See also:
* [ArrayVal](ArrayVal.md)
* [Equals](Equals.md)
* [Key](Key.md)
* [KeyNested](KeyNested.md)
* [KeySet](KeySet.md)
* [SubdivisionCode](SubdivisionCode.md)