respect-validation/docs/rules/Circuit.md
Henrique Moody 0c07060a04
Rename "Consecutive" to "Circuit"
The "Consecutive" rule is now renamed to "Circuit" to better reflect its
behavior of stopping at the first failure. I also favour this name
because it's much shorter.
2024-12-20 16:53:56 +01:00

1.4 KiB

Circuit

  • Circuit(Rule $rule1, Rule $rule2, Rule ...$rule)

Validates the input against a series of rules until the first fails.

This rule can be handy for getting the least error messages possible from a chain.

This rule can be helpful in combinations with Lazy. An excellent example is when you want to validate a country code and a subdivision code.

v::circuit(
    v::key('countryCode', v::countryCode()),
    v::lazy(static fn($input) => v::key('subdivisionCode', v::subdivisionCode($input['countryCode']))),
)->isValid($_POST);

You need a valid country code to create a SubdivisionCode, so it makes sense only to validate the subdivision code only if the country code is valid. In this case, you could also have used When, but you would then have to write v::key('countryCode', v::countryCode()) twice in your chain.

Templates

This rule does not have any templates, because it will always return the result of the first rule that fails. When all the validation rules pass, it will return the result of the last rule of the circuit.

Categorization

  • Composite
  • Conditions
  • Nesting

Changelog

Version Description
3.0.0 Created

See also: