Back to Validation

OneOf

docs/validators/OneOf.md

3.1.12.5 KB
Original Source
<!-- SPDX-License-Identifier: MIT SPDX-FileCopyrightText: (c) Respect Project Contributors SPDX-FileContributor: Alexandre Gomes Gaigalas <[email protected]> SPDX-FileContributor: Bradyn Poulsen <[email protected]> SPDX-FileContributor: Henrique Moody <[email protected]> -->

OneOf

  • OneOf(Validator $validator1, Validator $validator2)
  • OneOf(Validator $validator1, Validator $validator2, Validator ...$validators)

Will validate if exactly one inner validator passes.

php
v::oneOf(v::digit(), v::alpha())->assert('AB');
// Validation passes successfully

v::oneOf(v::digit(), v::alpha())->assert('12');
// Validation passes successfully

v::oneOf(v::digit(), v::alpha())->assert('AB12');
// → - "AB12" must pass one of the rules
// →   - "AB12" must consist only of digits (0-9)
// →   - "AB12" must consist only of letters (a-z)

v::oneOf(v::digit(), v::alpha())->assert('*');
// → - "*" must pass one of the rules
// →   - "*" must consist only of digits (0-9)
// →   - "*" must consist only of letters (a-z)

The chains above validate if the input is either a digit or an alphabetic character, one or the other, but not neither nor both.

Templates

OneOf::TEMPLATE_NONE

Used when none of the validators have passed.

ModeTemplate
default{{subject}} must pass one of the rules
inverted{{subject}} must pass one of the rules

OneOf::TEMPLATE_MORE_THAN_ONE

Used when more than one validator has passed.

ModeTemplate
default{{subject}} must pass only one of the rules
inverted{{subject}} must pass only one of the rules

Template placeholders

PlaceholderDescription
subjectThe validated input or the custom validator name (if specified).

Categorization

  • Composite
  • Nesting

Changelog

VersionDescription
3.0.0Require at least two validators to be passed
0.3.9Created

See Also