The current documentation is hosted via GitHub pages rendered by "Couscous". Every time we need a new version of the documentation published we need to manually execute the "couscous". This commit reorganize the documentation to be published to "Read the Docs" because it will also allow us to have documentations per version of the library most importantly provider a search field for the documentation. The documentation will be then published on: https://respect-validation.readthedocs.io/ Signed-off-by: Henrique Moody <henriquemoody@gmail.com>
1.9 KiB
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:
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:
v::keyValue('password_confirmation', 'equals', 'password')->validate($_POST);
The above code will result on true
if $_POST['password_confirmation']
is
equals to $_POST['password']
, it's the same of:
See another example:
v::keyValue('state', 'subdivisionCode', 'country')->validate($_POST);
The above code will result on true
if $_POST['state']
is a
subdivision code 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
.
v::keyValue('password_confirmation', 'equals', 'password')->check($input);
The above code may generate the message:
password_confirmation must be equals "password"
See also: