respect-validation/docs/rules/When.md
Henrique Moody 562d98d805
Refactor the NotEmpty rule
Since we have the ability to use `not` as a prefix, having rules that
validate negative behaviour makes them a bit inflexible, verbose, and
harder to understand.

This commit will refactor the `NotEmpty`, and rename it to `Falsy`. It
will no longer trim strings, because Blank does a much better job at it;
it only simulates the behaviour of PHP’s native `empty()` function.

Because `Falsy`, `Blank`, and `Undef` have similar behaviour, I created
a page to demonstrate the difference and show when the user should use
one or the other.

Assisted-by: Cursor (claude-4.5-opus-high)
2025-12-29 12:48:35 +01:00

1.4 KiB

When

  • When(Rule $if, Rule $then)
  • When(Rule $if, Rule $then, Rule $else)

A ternary validator that accepts three parameters.

When the $if validates, returns validation for $then. When the $if doesn't validate, returns validation for $else, if defined.

v::when(v::intVal(), v::positive(), v::notBlank())->isValid(1); // true
v::when(v::intVal(), v::positive(), v::notBlank())->isValid('non-blank string'); // true

v::when(v::intVal(), v::positive(), v::notBlank())->isValid(-1); // false
v::when(v::intVal(), v::positive(), v::notBlank())->isValid(''); // false

In the sample above, if $input is an integer, then it must be positive. If $input is not an integer, then it must not be blank. When $else is not defined use AlwaysInvalid

Templates

Template placeholders

Placeholder Description
subject The validated input or the custom validator name (if specified).

Categorization

  • Conditions
  • Nesting

Changelog

Version Description
0.8.0 Allow to use rule without else
0.3.9 Created

See also: