respect-validation/docs/rules/Key.md
Henrique Moody 24885e4a5f
Remove "KeyNested" rule
Because we have the Key and Property rules, the KeyNested is redundant,
although it's a helpful shortcut.

The real problem is dealing with messages and templates because the
structure of the validator needs to match the structure of the rule.
When using the `getMessages()` method from the exception we throw in
`assert()`, we get a flat structure, which is often not the intended
structure.

The KeyNested rule is cool, but it adds some complexity to the codebase
that I'm unwilling to deal with. It's not nice to remove a rule,
especially because I know people use it, but it's for the best. I'm
trying to keep the codebase small, so hopefully, it will get easier to
maintain.

Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
2024-03-05 02:28:16 +01:00

1.6 KiB

Key

  • Key(int|string $key, Validatable $rule)

Validates the value of an array against a given rule.

v::key('name', v::stringType())->validate(['name' => 'The Respect Panda']); // true

v::key('email', v::email())->validate(['email' => 'therespectpanda@gmail.com']); // true

v::key('age', v::intVal())->validate([]); // false

You can also use Key to validate nested arrays:

v::key(
    'payment_details',
    v::key('credit_card', v::creditCard())
)->validate([
    'payment_details' => [
        'credit_card' => '5376 7473 9720 8720',
    ],
]); // true

The name of this validator is automatically set to the key name.

v::key('email', v::email())->assert([]);
// message: email must be present

v::key('email', v::email())->assert(['email' => 'not email']);
// message: email must be valid email

Note

  • To validate if a key exists, use KeyExists instead.
  • To validate an array against a given rule if the key exists, use KeyOptional instead.

Categorization

  • Arrays
  • Nesting
  • Structures

Changelog

Version Description
3.0.0 Split by KeyExists and KeyOptional
0.3.9 Created

See also: