W3cubDocs

/CakePHP 4.1

Class Validator

Validator object encapsulates all methods related to data validations for a model It also provides an API to dynamically change validation rules for each model field.

Implements ArrayAccess to easily modify rules in the set

Namespace: Cake\Validation

Constants summary

  • int
    EMPTY_ALL
    self::EMPTY_STRING | self::EMPTY_ARRAY | self::EMPTY_FILE | self::EMPTY_DATE | self::EMPTY_TIME
  • int
    EMPTY_ARRAY
    2
  • int
    EMPTY_DATE
    8
  • int
    EMPTY_FILE
    4
  • int
    EMPTY_NULL
    0
  • int
    EMPTY_STRING
    1
  • int
    EMPTY_TIME
    16
  • string
    NESTED
    '_nested'
  • string
    WHEN_CREATE
    'create'
  • string
    WHEN_UPDATE
    'update'

Properties summary

  • $_allowEmptyFlags protected
    array

    Contains the flags which specify what is empty for each corresponding field.

  • array

    Contains the validation messages associated with checking the emptiness for each corresponding field.

  • $_defaultProviders protected static
    array

    An associative array of objects or classes used as a default provider list

  • $_fields protected
    \Cake\Validation\ValidationSet[]

    Holds the ValidationSet objects array

  • $_presenceMessages protected
    array

    Contains the validation messages associated with checking the presence for each corresponding field.

  • $_providers protected
    array

    An associative array of objects or classes containing methods used for validation

  • $_stopOnFailure protected
    bool

    Whether to apply last flag to generated rule(s).

  • $_useI18n protected
    bool

    Whether or not to use I18n functions for translating default error messages

Method Summary

  • __construct() public

    Constructor

  • __debugInfo() public

    Get the printable version of this object.

  • _canBeEmpty() protected

    Returns whether the field can be left blank according to allowEmpty

  • _checkPresence() protected

    Returns false if any validation for the passed rule set should be stopped due to the field missing in the data array

  • _convertValidatorToArray() protected

    Converts validator to fieldName => $settings array

  • _fieldIsEmpty() protected

    Returns true if the field is empty in the passed data array

  • _processRules() protected

    Iterates over each rule in the validation set and collects the errors resulting from executing them

  • add() public

    Adds a new rule to a field's rule set. If second argument is an array then rules list for the field will be replaced with second argument and third argument will be ignored.

  • addDefaultProvider() public static

    Associates an object to a name so it can be used as a default provider.

  • addNested() public

    Adds a nested validator.

  • addNestedMany() public

    Adds a nested validator.

  • allowEmpty() public

    Allows a field to be empty. You can also pass array.

  • allowEmptyArray() public

    Allows a field to be an empty array.

  • allowEmptyDate() public

    Allows a field to be an empty date.

  • allowEmptyDateTime() public

    Allows a field to be an empty date/time.

  • allowEmptyFile() public

    Allows a field to be an empty file.

  • allowEmptyFor() public

    Low-level method to indicate that a field can be empty.

  • allowEmptyString() public

    Allows a field to be an empty string.

  • allowEmptyTime() public

    Allows a field to be an empty time.

  • alphaNumeric() public

    Add an alphanumeric rule to a field.

  • ascii() public

    Add a validation rule to ensure a field contains only ascii bytes

  • asciiAlphaNumeric() public

    Add an ascii-alphanumeric rule to a field.

  • boolean() public

    Add a boolean validation rule to a field.

  • containsNonAlphaNumeric() public

    Add a rule to check if a field contains non alpha numeric characters.

  • count() public

    Returns the number of fields having validation rules

  • creditCard() public

    Add a credit card rule to a field.

  • date() public

    Add a date format validation rule to a field.

  • dateTime() public

    Add a date time format validation rule to a field.

  • decimal() public

    Add a decimal validation rule to a field.

  • email() public

    Add an email validation rule to a field.

  • equalToField() public

    Add a rule to compare one field is equal to another.

  • equals() public

    Add a equal to comparison rule to a field.

  • errors() public

    Validates and returns an array of failed fields and their error messages.

  • field() public

    Returns a ValidationSet object containing all validation rules for a field, if passed a ValidationSet as second argument, it will replace any other rule set defined before

  • getDefaultProvider() public static

    Returns the default provider stored under that name if it exists.

  • getDefaultProviders() public static

    Get the list of default providers.

  • getIterator() public

    Returns an iterator for each of the fields to be validated

  • getNotEmptyMessage() public

    Gets the notEmpty message for a field

  • getProvider() public

    Returns the provider stored under that name if it exists.

  • getRequiredMessage() public

    Gets the required message for a field

  • greaterThan() public

    Add a greater than comparison rule to a field.

  • greaterThanField() public

    Add a rule to compare one field is greater than another.

  • greaterThanOrEqual() public

    Add a greater than or equal to comparison rule to a field.

  • greaterThanOrEqualToField() public

    Add a rule to compare one field is greater than or equal to another.

  • hasAtLeast() public

    Add a validation rule to ensure that a field is an array containing at least the specified amount of elements

  • hasAtMost() public

    Add a validation rule to ensure that a field is an array containing at most the specified amount of elements

  • hasField() public

    Check whether or not a validator contains any rules for the given field.

  • hexColor() public

    Add a validation rule to ensure a field is a 6 digits hex color value.

  • inList() public

    Add a validation rule to ensure the field value is within an allowed list.

  • integer() public

    Add a validation rule to ensure a field is an integer value.

  • invertWhenClause() protected

    Invert a when clause for creating notEmpty rules

  • ip() public

    Add an IP validation rule to a field.

  • ipv4() public

    Add an IPv4 validation rule to a field.

  • ipv6() public

    Add an IPv6 validation rule to a field.

  • isArray() public

    Add a validation rule to ensure that a field contains an array.

  • isEmpty() protected

    Returns true if the field is empty in the passed data array

  • isEmptyAllowed() public

    Returns whether or not a field can be left empty for a new or already existing record.

  • isPresenceRequired() public

    Returns whether or not a field can be left out for a new or already existing record.

  • latLong() public

    Add a validation rule to ensure the field is a lat/long tuple.

  • latitude() public

    Add a validation rule to ensure the field is a latitude.

  • lengthBetween() public

    Add an rule that ensures a string length is within a range.

  • lessThan() public

    Add a less than comparison rule to a field.

  • lessThanField() public

    Add a rule to compare one field is less than another.

  • lessThanOrEqual() public

    Add a less than or equal comparison rule to a field.

  • lessThanOrEqualToField() public

    Add a rule to compare one field is less than or equal to another.

  • localizedTime() public

    Add a localized time, date or datetime format validation rule to a field.

  • longitude() public

    Add a validation rule to ensure the field is a longitude.

  • maxLength() public

    Add a string length validation rule to a field.

  • maxLengthBytes() public

    Add a string length validation rule to a field.

  • minLength() public

    Add a string length validation rule to a field.

  • minLengthBytes() public

    Add a string length validation rule to a field.

  • multipleOptions() public

    Add a validation rule for a multiple select. Comparison is case sensitive by default.

  • naturalNumber() public

    Add a natural number validation rule to a field.

  • nonNegativeInteger() public

    Add a validation rule to ensure a field is a non negative integer.

  • notAlphaNumeric() public

    Add a non-alphanumeric rule to a field.

  • notAsciiAlphaNumeric() public

    Add a non-ascii alphanumeric rule to a field.

  • notBlank() public

    Add a notBlank rule to a field.

  • notEmpty() public

    Sets a field to require a non-empty value. You can also pass array.

  • notEmptyArray() public

    Require a field to be a non-empty array

  • notEmptyDate() public

    Require a non-empty date value

  • notEmptyDateTime() public

    Require a field to be a non empty date/time.

  • notEmptyFile() public

    Require a field to be a not-empty file.

  • notEmptyString() public

    Requires a field to be not be an empty string.

  • notEmptyTime() public

    Require a field to be a non-empty time.

  • notEqualToField() public

    Add a rule to compare one field is not equal to another.

  • notEquals() public

    Add a not equal to comparison rule to a field.

  • notSameAs() public

    Add a rule to compare that two fields have different values.

  • numeric() public

    Add a numeric value validation rule to a field.

  • offsetExists() public

    Returns whether a rule set is defined for a field or not

  • offsetGet() public

    Returns the rule set for a field

  • offsetSet() public

    Sets the rule set for a field

  • offsetUnset() public

    Unsets the rule set for a field

  • providers() public

    Get the list of providers in this validator.

  • range() public

    Add a validation rule to ensure a field is within a numeric range

  • regex() public

    Returns whether or not a field matches against a regular expression.

  • remove() public

    Removes a rule from the set by its name

  • requirePresence() public

    Sets whether a field is required to be present in data array.

  • sameAs() public

    Add a rule to compare two fields to each other.

  • scalar() public

    Add a validation rule to ensure that a field contains a scalar.

  • setProvider() public

    Associates an object to a name so it can be used as a provider. Providers are objects or class names that can contain methods used during validation of for deciding whether a validation rule can be applied. All validation methods, when called will receive the full list of providers stored in this validator.

  • setStopOnFailure() public

    Whether to stop validation rule evaluation on the first failed rule.

  • time() public

    Add a time format validation rule to a field.

  • uploadedFile() public

    Add a validation rule to ensure the field is an uploaded file

  • url() public

    Add a validation rule to ensure a field is a URL.

  • urlWithProtocol() public

    Add a validation rule to ensure a field is a URL.

  • utf8() public

    Add a validation rule to ensure a field contains only BMP utf8 bytes

  • utf8Extended() public

    Add a validation rule to ensure a field contains only utf8 bytes.

  • uuid() public

    Add a validation rule to ensure the field is a UUID

  • validate() public

    Validates and returns an array of failed fields and their error messages.

Method Detail

__construct() public

__construct()

Constructor

__debugInfo() public

__debugInfo()

Get the printable version of this object.

Returns

array

_canBeEmpty() protected

_canBeEmpty(\Cake\Validation\ValidationSet $field, array $context)

Returns whether the field can be left blank according to allowEmpty

Parameters

\Cake\Validation\ValidationSet $field

the set of rules for a field

array $context

a key value list of data containing the validation context.

Returns

bool

_checkPresence() protected

_checkPresence(\Cake\Validation\ValidationSet $field, array $context)

Returns false if any validation for the passed rule set should be stopped due to the field missing in the data array

Parameters

\Cake\Validation\ValidationSet $field

The set of rules for a field.

array $context

A key value list of data containing the validation context.

Returns

bool

_convertValidatorToArray() protected

_convertValidatorToArray(mixed $fieldName, array $defaults, mixed $settings)

Converts validator to fieldName => $settings array

Parameters

int|string $fieldName

name of field

array $defaults optional

default settings

string|array $settings optional

settings from data

Returns

array[]

Throws

InvalidArgumentException

_fieldIsEmpty() protected

_fieldIsEmpty(mixed $data)

Returns true if the field is empty in the passed data array

Parameters

mixed $data

Value to check against.

Returns

bool

_processRules() protected

_processRules(string $field, \Cake\Validation\ValidationSet $rules, array $data, bool $newRecord)

Iterates over each rule in the validation set and collects the errors resulting from executing them

Parameters

string $field

The name of the field that is being processed

\Cake\Validation\ValidationSet $rules

the list of rules for a field

array $data

the full data passed to the validator

bool $newRecord

whether is it a new record or an existing one

Returns

array

add() public

add(string $field, mixed $name, mixed $rule)

Adds a new rule to a field's rule set. If second argument is an array then rules list for the field will be replaced with second argument and third argument will be ignored.

Example:

$validator
         ->add('title', 'required', ['rule' => 'notBlank'])
         ->add('user_id', 'valid', ['rule' => 'numeric', 'message' => 'Invalid User'])

     $validator->add('password', [
         'size' => ['rule' => ['lengthBetween', 8, 20]],
         'hasSpecialCharacter' => ['rule' => 'validateSpecialchar', 'message' => 'not valid']
     ]);

Parameters

string $field

The name of the field from which the rule will be added

array|string $name

The alias for a single rule or multiple rules array

array|\Cake\Validation\ValidationRule $rule optional

the rule to add

Returns

$this

Throws

InvalidArgumentException
If numeric index cannot be resolved to a string one

addDefaultProvider() public static

addDefaultProvider(string $name, mixed $object)

Associates an object to a name so it can be used as a default provider.

Parameters

string $name

The name under which the provider should be set.

object|string $object

Provider object or class name.

addNested() public

addNested(string $field, \Cake\Validation\Validator $validator, ?string $message, mixed $when)

Adds a nested validator.

Nesting validators allows you to define validators for array types. For example, nested validators are ideal when you want to validate a sub-document, or complex array type.

This method assumes that the sub-document has a 1:1 relationship with the parent.

The providers of the parent validator will be synced into the nested validator, when errors are checked. This ensures that any validation rule providers connected in the parent will have the same values in the nested validator when rules are evaluated.

Parameters

string $field

The root field for the nested validator.

\Cake\Validation\Validator $validator

The nested validator.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

addNestedMany() public

addNestedMany(string $field, \Cake\Validation\Validator $validator, ?string $message, mixed $when)

Adds a nested validator.

Nesting validators allows you to define validators for array types. For example, nested validators are ideal when you want to validate many similar sub-documents or complex array types.

This method assumes that the sub-document has a 1:N relationship with the parent.

The providers of the parent validator will be synced into the nested validator, when errors are checked. This ensures that any validation rule providers connected in the parent will have the same values in the nested validator when rules are evaluated.

Parameters

string $field

The root field for the nested validator.

\Cake\Validation\Validator $validator

The nested validator.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

allowEmpty() public

allowEmpty(mixed $field, mixed $when, mixed $message)

Allows a field to be empty. You can also pass array.

Using an array will let you provide the following keys:

  • when individual when condition for field
  • 'message' individual message for field

You can also set when and message for all passed fields, the individual setting takes precedence over group settings.

This is the opposite of notEmpty() which requires a field to not be empty. By using $mode equal to 'create' or 'update', you can allow fields to be empty when records are first created, or when they are updated.

Example:

// Email can be empty
$validator->allowEmpty('email');

// Email can be empty on create
$validator->allowEmpty('email', Validator::WHEN_CREATE);

// Email can be empty on update
$validator->allowEmpty('email', Validator::WHEN_UPDATE);

// Email and subject can be empty on update
$validator->allowEmpty(['email', 'subject'], Validator::WHEN_UPDATE;

// Email can be always empty, subject and content can be empty on update.
$validator->allowEmpty(
     [
         'email' => [
             'when' => true
         ],
         'content' => [
             'message' => 'Content cannot be empty'
         ],
         'subject'
     ],
     Validator::WHEN_UPDATE
);

It is possible to conditionally allow emptiness on a field by passing a callback as a second argument. The callback will receive the validation context array as argument:

$validator->allowEmpty('email', function ($context) {
 return !$context['newRecord'] || $context['data']['role'] === 'admin';
});

This method will correctly detect empty file uploads and date/time/datetime fields.

Because this and notEmpty() modify the same internal state, the last method called will take precedence.

Parameters

string|array $field

the name of the field or a list of fields

bool|string|callable $when optional

Indicates when the field is allowed to be empty Valid values are true (always), 'create', 'update'. If a callable is passed then the field will allowed to be empty only when the callback returns true.

string|null $message optional

The message to show if the field is not

Returns

$this

allowEmptyArray() public

allowEmptyArray(string $field, ?string $message, mixed $when)

Allows a field to be an empty array.

This method is equivalent to calling allowEmptyFor() with EMPTY_STRING + EMPTY_ARRAY flags.

Parameters

string $field

The name of the field.

string|null $message optional

The message to show if the field is not

bool|string|callable $when optional

Indicates when the field is allowed to be empty Valid values are true, false, 'create', 'update'. If a callable is passed then the field will allowed to be empty only when the callback returns true.

Returns

$this

See Also

\Cake\Validation\Validator::allowEmptyFor()
for examples.

allowEmptyDate() public

allowEmptyDate(string $field, ?string $message, mixed $when)

Allows a field to be an empty date.

Empty date values are null, '', [] and arrays where all values are '' and the year key is present.

Parameters

string $field

The name of the field.

string|null $message optional

The message to show if the field is not

bool|string|callable $when optional

Indicates when the field is allowed to be empty Valid values are true, false, 'create', 'update'. If a callable is passed then the field will allowed to be empty only when the callback returns true.

Returns

$this

See Also

\Cake\Validation\Validator::allowEmptyFor()
for examples

allowEmptyDateTime() public

allowEmptyDateTime(string $field, ?string $message, mixed $when)

Allows a field to be an empty date/time.

Empty date values are null, '', [] and arrays where all values are '' and the year and hour keys are present.

This method is equivalent to calling allowEmptyFor() with EMPTY_STRING + EMPTY_DATE + EMPTY_TIME flags.

Parameters

string $field

The name of the field.

string|null $message optional

The message to show if the field is not

bool|string|callable $when optional

Indicates when the field is allowed to be empty Valid values are true, false, 'create', 'update'. If a callable is passed then the field will allowed to be empty only when the callback returns false.

Returns

$this

See Also

\Cake\Validation\Validator::allowEmptyFor()
for examples.

allowEmptyFile() public

allowEmptyFile(string $field, ?string $message, mixed $when)

Allows a field to be an empty file.

This method is equivalent to calling allowEmptyFor() with EMPTY_FILE flag. File fields will not accept '', or [] as empty values. Only null and a file upload with error equal to UPLOAD_ERR_NO_FILE will be treated as empty.

Parameters

string $field

The name of the field.

string|null $message optional

The message to show if the field is not

bool|string|callable $when optional

Indicates when the field is allowed to be empty Valid values are true, 'create', 'update'. If a callable is passed then the field will allowed to be empty only when the callback returns true.

Returns

$this

See Also

\Cake\Validation\Validator::allowEmptyFor()
For detail usage

allowEmptyFor() public

allowEmptyFor(string $field, ?int $flags, mixed $when, ?string $message)

Low-level method to indicate that a field can be empty.

This method should generally not be used and instead you should use:

  • allowEmptyString()
  • allowEmptyArray()
  • allowEmptyFile()
  • allowEmptyDate()
  • allowEmptyDatetime()
  • allowEmptyTime()

Should be used as their APIs are simpler to operate and read.

You can also set flags, when and message for all passed fields, the individual setting takes precedence over group settings.

Example:

// Email can be empty
$validator->allowEmptyFor('email', Validator::EMPTY_STRING);

// Email can be empty on create
$validator->allowEmptyFor('email', Validator::EMPTY_STRING, Validator::WHEN_CREATE);

// Email can be empty on update
$validator->allowEmptyFor('email', Validator::EMPTY_STRING, Validator::WHEN_UPDATE);

It is possible to conditionally allow emptiness on a field by passing a callback as a second argument. The callback will receive the validation context array as argument:

$validator->allowEmpty('email', Validator::EMPTY_STRING, function ($context) {
  return !$context['newRecord'] || $context['data']['role'] === 'admin';
});

If you want to allow other kind of empty data on a field, you need to pass other flags:

$validator->allowEmptyFor('photo', Validator::EMPTY_FILE);
$validator->allowEmptyFor('published', Validator::EMPTY_STRING | Validator::EMPTY_DATE | Validator::EMPTY_TIME);
$validator->allowEmptyFor('items', Validator::EMPTY_STRING | Validator::EMPTY_ARRAY);

You can also use convenience wrappers of this method. The following calls are the same as above:

$validator->allowEmptyFile('photo');
$validator->allowEmptyDateTime('published');
$validator->allowEmptyArray('items');

Parameters

string $field

The name of the field.

int|null $flags optional

A bitmask of EMPTY_* flags which specify what is empty. If no flags/bitmask is provided only null will be allowed as empty value.

bool|string|callable $when optional

Indicates when the field is allowed to be empty Valid values are true, false, 'create', 'update'. If a callable is passed then the field will allowed to be empty only when the callback returns true.

string|null $message optional

The message to show if the field is not

Returns

$this

allowEmptyString() public

allowEmptyString(string $field, ?string $message, mixed $when)

Allows a field to be an empty string.

This method is equivalent to calling allowEmptyFor() with EMPTY_STRING flag.

Parameters

string $field

The name of the field.

string|null $message optional

The message to show if the field is not

bool|string|callable $when optional

Indicates when the field is allowed to be empty Valid values are true, false, 'create', 'update'. If a callable is passed then the field will allowed to be empty only when the callback returns true.

Returns

$this

See Also

\Cake\Validation\Validator::allowEmptyFor()
For detail usage

allowEmptyTime() public

allowEmptyTime(string $field, ?string $message, mixed $when)

Allows a field to be an empty time.

Empty date values are null, '', [] and arrays where all values are '' and the hour key is present.

This method is equivalent to calling allowEmptyFor() with EMPTY_STRING + EMPTY_TIME flags.

Parameters

string $field

The name of the field.

string|null $message optional

The message to show if the field is not

bool|string|callable $when optional

Indicates when the field is allowed to be empty Valid values are true, false, 'create', 'update'. If a callable is passed then the field will allowed to be empty only when the callback returns true.

Returns

$this

See Also

\Cake\Validation\Validator::allowEmptyFor()
for examples.

alphaNumeric() public

alphaNumeric(string $field, ?string $message, mixed $when)

Add an alphanumeric rule to a field.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::alphaNumeric()

ascii() public

ascii(string $field, ?string $message, mixed $when)

Add a validation rule to ensure a field contains only ascii bytes

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::ascii()

asciiAlphaNumeric() public

asciiAlphaNumeric(string $field, ?string $message, mixed $when)

Add an ascii-alphanumeric rule to a field.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::asciiAlphaNumeric()

boolean() public

boolean(string $field, ?string $message, mixed $when)

Add a boolean validation rule to a field.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::boolean()

containsNonAlphaNumeric() public

containsNonAlphaNumeric(string $field, int $limit, ?string $message, mixed $when)

Add a rule to check if a field contains non alpha numeric characters.

Parameters

string $field

The field you want to apply the rule to.

int $limit optional

The minimum number of non-alphanumeric fields required.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::containsNonAlphaNumeric()

count() public

count()

Returns the number of fields having validation rules

Returns

int

creditCard() public

creditCard(string $field, string $type, ?string $message, mixed $when)

Add a credit card rule to a field.

Parameters

string $field

The field you want to apply the rule to.

string $type optional

The type of cards you want to allow. Defaults to 'all'. You can also supply an array of accepted card types. e.g ['mastercard', 'visa', 'amex']

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::creditCard()

date() public

date(string $field, array $formats, ?string $message, mixed $when)

Add a date format validation rule to a field.

Parameters

string $field

The field you want to apply the rule to.

array $formats optional

A list of accepted date formats.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::date()

dateTime() public

dateTime(string $field, array $formats, ?string $message, mixed $when)

Add a date time format validation rule to a field.

Parameters

string $field

The field you want to apply the rule to.

array $formats optional

A list of accepted date formats.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::datetime()

decimal() public

decimal(string $field, ?int $places, ?string $message, mixed $when)

Add a decimal validation rule to a field.

Parameters

string $field

The field you want to apply the rule to.

int|null $places optional

The number of decimal places to require.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::decimal()

email() public

email(string $field, bool $checkMX, ?string $message, mixed $when)

Add an email validation rule to a field.

Parameters

string $field

The field you want to apply the rule to.

bool $checkMX optional

Whether or not to check the MX records.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::email()

equalToField() public

equalToField(string $field, string $secondField, ?string $message, mixed $when)

Add a rule to compare one field is equal to another.

Parameters

string $field

The field you want to apply the rule to.

string $secondField

The field you want to compare against.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::compareFields()

equals() public

equals(string $field, mixed $value, ?string $message, mixed $when)

Add a equal to comparison rule to a field.

Parameters

string $field

The field you want to apply the rule to.

int|float $value

The value user data must be equal to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::comparison()

errors() public

errors(array $data, bool $newRecord)

Validates and returns an array of failed fields and their error messages.

Parameters

array $data

The data to be checked for errors

bool $newRecord optional

whether the data to be validated is new or to be updated.

Returns

array[]

Array of failed fields

field() public

field(string $name, ?\Cake\Validation\ValidationSet $set)

Returns a ValidationSet object containing all validation rules for a field, if passed a ValidationSet as second argument, it will replace any other rule set defined before

Parameters

string $name

[optional] The fieldname to fetch.

\Cake\Validation\ValidationSet|null $set optional

The set of rules for field

Returns

\Cake\Validation\ValidationSet

getDefaultProvider() public static

getDefaultProvider(string $name)

Returns the default provider stored under that name if it exists.

Parameters

string $name

The name under which the provider should be retrieved.

Returns

object|string|null

getDefaultProviders() public static

getDefaultProviders()

Get the list of default providers.

Returns

string[]

getIterator() public

getIterator()

Returns an iterator for each of the fields to be validated

Returns

\Cake\Validation\ValidationSet[]

getNotEmptyMessage() public

getNotEmptyMessage(string $field)

Gets the notEmpty message for a field

Parameters

string $field

Field name

Returns

string|null

getProvider() public

getProvider(string $name)

Returns the provider stored under that name if it exists.

Parameters

string $name

The name under which the provider should be set.

Returns

object|string|null

getRequiredMessage() public

getRequiredMessage(string $field)

Gets the required message for a field

Parameters

string $field

Field name

Returns

string|null

greaterThan() public

greaterThan(string $field, mixed $value, ?string $message, mixed $when)

Add a greater than comparison rule to a field.

Parameters

string $field

The field you want to apply the rule to.

int|float $value

The value user data must be greater than.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::comparison()

greaterThanField() public

greaterThanField(string $field, string $secondField, ?string $message, mixed $when)

Add a rule to compare one field is greater than another.

Parameters

string $field

The field you want to apply the rule to.

string $secondField

The field you want to compare against.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::compareFields()

greaterThanOrEqual() public

greaterThanOrEqual(string $field, mixed $value, ?string $message, mixed $when)

Add a greater than or equal to comparison rule to a field.

Parameters

string $field

The field you want to apply the rule to.

int|float $value

The value user data must be greater than or equal to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::comparison()

greaterThanOrEqualToField() public

greaterThanOrEqualToField(string $field, string $secondField, ?string $message, mixed $when)

Add a rule to compare one field is greater than or equal to another.

Parameters

string $field

The field you want to apply the rule to.

string $secondField

The field you want to compare against.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::compareFields()

hasAtLeast() public

hasAtLeast(string $field, int $count, ?string $message, mixed $when)

Add a validation rule to ensure that a field is an array containing at least the specified amount of elements

Parameters

string $field

The field you want to apply the rule to.

int $count

The number of elements the array should at least have

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::numElements()

hasAtMost() public

hasAtMost(string $field, int $count, ?string $message, mixed $when)

Add a validation rule to ensure that a field is an array containing at most the specified amount of elements

Parameters

string $field

The field you want to apply the rule to.

int $count

The number maximum amount of elements the field should have

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::numElements()

hasField() public

hasField(string $name)

Check whether or not a validator contains any rules for the given field.

Parameters

string $name

The field name to check.

Returns

bool

hexColor() public

hexColor(string $field, ?string $message, mixed $when)

Add a validation rule to ensure a field is a 6 digits hex color value.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::hexColor()

inList() public

inList(string $field, array $list, ?string $message, mixed $when)

Add a validation rule to ensure the field value is within an allowed list.

Parameters

string $field

The field you want to apply the rule to.

array $list

The list of valid options.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::inList()

integer() public

integer(string $field, ?string $message, mixed $when)

Add a validation rule to ensure a field is an integer value.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::isInteger()

invertWhenClause() protected

invertWhenClause(mixed $when)

Invert a when clause for creating notEmpty rules

Parameters

bool|string|callable $when

Indicates when the field is not allowed to be empty. Valid values are true (always), 'create', 'update'. If a callable is passed then the field will allowed to be empty only when the callback returns false.

Returns

bool|string|callable

ip() public

ip(string $field, ?string $message, mixed $when)

Add an IP validation rule to a field.

This rule will accept both IPv4 and IPv6 addresses.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::ip()

ipv4() public

ipv4(string $field, ?string $message, mixed $when)

Add an IPv4 validation rule to a field.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::ip()

ipv6() public

ipv6(string $field, ?string $message, mixed $when)

Add an IPv6 validation rule to a field.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::ip()

isArray() public

isArray(string $field, ?string $message, mixed $when)

Add a validation rule to ensure that a field contains an array.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::isArray()

isEmpty() protected

isEmpty(mixed $data, int $flags)

Returns true if the field is empty in the passed data array

Parameters

mixed $data

Value to check against.

int $flags

A bitmask of EMPTY_* flags which specify what is empty

Returns

bool

isEmptyAllowed() public

isEmptyAllowed(string $field, bool $newRecord)

Returns whether or not a field can be left empty for a new or already existing record.

Parameters

string $field

Field name.

bool $newRecord

whether the data to be validated is new or to be updated.

Returns

bool

isPresenceRequired() public

isPresenceRequired(string $field, bool $newRecord)

Returns whether or not a field can be left out for a new or already existing record.

Parameters

string $field

Field name.

bool $newRecord

Whether the data to be validated is new or to be updated.

Returns

bool

latLong() public

latLong(string $field, ?string $message, mixed $when)

Add a validation rule to ensure the field is a lat/long tuple.

e.g. <lat>, <lng>

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::uuid()

latitude() public

latitude(string $field, ?string $message, mixed $when)

Add a validation rule to ensure the field is a latitude.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::latitude()

lengthBetween() public

lengthBetween(string $field, array $range, ?string $message, mixed $when)

Add an rule that ensures a string length is within a range.

Parameters

string $field

The field you want to apply the rule to.

array $range

The inclusive minimum and maximum length you want permitted.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

Throws

InvalidArgumentException

See Also

\Cake\Validation\Validation::alphaNumeric()

lessThan() public

lessThan(string $field, mixed $value, ?string $message, mixed $when)

Add a less than comparison rule to a field.

Parameters

string $field

The field you want to apply the rule to.

int|float $value

The value user data must be less than.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::comparison()

lessThanField() public

lessThanField(string $field, string $secondField, ?string $message, mixed $when)

Add a rule to compare one field is less than another.

Parameters

string $field

The field you want to apply the rule to.

string $secondField

The field you want to compare against.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::compareFields()

lessThanOrEqual() public

lessThanOrEqual(string $field, mixed $value, ?string $message, mixed $when)

Add a less than or equal comparison rule to a field.

Parameters

string $field

The field you want to apply the rule to.

int|float $value

The value user data must be less than or equal to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::comparison()

lessThanOrEqualToField() public

lessThanOrEqualToField(string $field, string $secondField, ?string $message, mixed $when)

Add a rule to compare one field is less than or equal to another.

Parameters

string $field

The field you want to apply the rule to.

string $secondField

The field you want to compare against.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::compareFields()

localizedTime() public

localizedTime(string $field, string $type, ?string $message, mixed $when)

Add a localized time, date or datetime format validation rule to a field.

Parameters

string $field

The field you want to apply the rule to.

string $type optional

Parser type, one out of 'date', 'time', and 'datetime'

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::localizedTime()

longitude() public

longitude(string $field, ?string $message, mixed $when)

Add a validation rule to ensure the field is a longitude.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::longitude()

maxLength() public

maxLength(string $field, int $max, ?string $message, mixed $when)

Add a string length validation rule to a field.

Parameters

string $field

The field you want to apply the rule to.

int $max

The maximum length allowed.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::maxLength()

maxLengthBytes() public

maxLengthBytes(string $field, int $max, ?string $message, mixed $when)

Add a string length validation rule to a field.

Parameters

string $field

The field you want to apply the rule to.

int $max

The maximum length allowed.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::maxLengthBytes()

minLength() public

minLength(string $field, int $min, ?string $message, mixed $when)

Add a string length validation rule to a field.

Parameters

string $field

The field you want to apply the rule to.

int $min

The minimum length required.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::minLength()

minLengthBytes() public

minLengthBytes(string $field, int $min, ?string $message, mixed $when)

Add a string length validation rule to a field.

Parameters

string $field

The field you want to apply the rule to.

int $min

The minimum length required.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::minLengthBytes()

multipleOptions() public

multipleOptions(string $field, array $options, ?string $message, mixed $when)

Add a validation rule for a multiple select. Comparison is case sensitive by default.

Parameters

string $field

The field you want to apply the rule to.

array $options optional

The options for the validator. Includes the options defined in \Cake\Validation\Validation::multiple() and the caseInsensitive parameter.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::multiple()

naturalNumber() public

naturalNumber(string $field, ?string $message, mixed $when)

Add a natural number validation rule to a field.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::naturalNumber()

nonNegativeInteger() public

nonNegativeInteger(string $field, ?string $message, mixed $when)

Add a validation rule to ensure a field is a non negative integer.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::naturalNumber()

notAlphaNumeric() public

notAlphaNumeric(string $field, ?string $message, mixed $when)

Add a non-alphanumeric rule to a field.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::notAlphaNumeric()

notAsciiAlphaNumeric() public

notAsciiAlphaNumeric(string $field, ?string $message, mixed $when)

Add a non-ascii alphanumeric rule to a field.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::notAlphaNumeric()

notBlank() public

notBlank(string $field, ?string $message, mixed $when)

Add a notBlank rule to a field.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::notBlank()

notEmpty() public

notEmpty(mixed $field, ?string $message, mixed $when)

Sets a field to require a non-empty value. You can also pass array.

Using an array will let you provide the following keys:

  • when individual when condition for field
  • message individual error message for field

You can also set when and message for all passed fields, the individual setting takes precedence over group settings.

This is the opposite of allowEmpty() which allows a field to be empty. By using $mode equal to 'create' or 'update', you can make fields required when records are first created, or when they are updated.

Example:

$message = 'This field cannot be empty';

// Email cannot be empty
$validator->notEmpty('email');

// Email can be empty on update, but not create
$validator->notEmpty('email', $message, 'create');

// Email can be empty on create, but required on update.
$validator->notEmpty('email', $message, Validator::WHEN_UPDATE);

// Email and title can be empty on create, but are required on update.
$validator->notEmpty(['email', 'title'], $message, Validator::WHEN_UPDATE);

// Email can be empty on create, title must always be not empty
$validator->notEmpty(
     [
         'email',
         'title' => [
             'when' => true,
             'message' => 'Title cannot be empty'
         ]
     ],
     $message,
     Validator::WHEN_UPDATE
);

It is possible to conditionally disallow emptiness on a field by passing a callback as the third argument. The callback will receive the validation context array as argument:

$validator->notEmpty('email', 'Email is required', function ($context) {
  return $context['newRecord'] && $context['data']['role'] !== 'admin';
});

Because this and allowEmpty() modify the same internal state, the last method called will take precedence.

Parameters

string|array $field

the name of the field or list of fields

string|null $message optional

The message to show if the field is not

bool|string|callable $when optional

Indicates when the field is not allowed to be empty. Valid values are true (always), 'create', 'update'. If a callable is passed then the field will allowed to be empty only when the callback returns false.

Returns

$this

notEmptyArray() public

notEmptyArray(string $field, ?string $message, mixed $when)

Require a field to be a non-empty array

Opposite to allowEmptyArray()

Parameters

string $field

The name of the field.

string|null $message optional

The message to show if the field is empty.

bool|string|callable $when optional

Indicates when the field is not allowed to be empty. Valid values are false (never), 'create', 'update'. If a callable is passed then the field will be required to be not empty when the callback returns true.

Returns

$this

See Also

\Cake\Validation\Validator::allowEmptyArray()

notEmptyDate() public

notEmptyDate(string $field, ?string $message, mixed $when)

Require a non-empty date value

Parameters

string $field

The name of the field.

string|null $message optional

The message to show if the field is empty.

bool|string|callable $when optional

Indicates when the field is not allowed to be empty. Valid values are false (never), 'create', 'update'. If a callable is passed then the field will be required to be not empty when the callback returns true.

Returns

$this

See Also

\Cake\Validation\Validator::allowEmptyDate()
for examples

notEmptyDateTime() public

notEmptyDateTime(string $field, ?string $message, mixed $when)

Require a field to be a non empty date/time.

Opposite to allowEmptyDateTime

Parameters

string $field

The name of the field.

string|null $message optional

The message to show if the field is empty.

bool|string|callable $when optional

Indicates when the field is not allowed to be empty. Valid values are false (never), 'create', 'update'. If a callable is passed then the field will be required to be not empty when the callback returns true.

Returns

$this

See Also

\Cake\Validation\Validator::allowEmptyDateTime()

notEmptyFile() public

notEmptyFile(string $field, ?string $message, mixed $when)

Require a field to be a not-empty file.

Opposite to allowEmptyFile()

Parameters

string $field

The name of the field.

string|null $message optional

The message to show if the field is empty.

bool|string|callable $when optional

Indicates when the field is not allowed to be empty. Valid values are false (never), 'create', 'update'. If a callable is passed then the field will be required to be not empty when the callback returns true.

Returns

$this

See Also

\Cake\Validation\Validator::allowEmptyFile()

notEmptyString() public

notEmptyString(string $field, ?string $message, mixed $when)

Requires a field to be not be an empty string.

Opposite to allowEmptyString()

Parameters

string $field

The name of the field.

string|null $message optional

The message to show if the field is empty.

bool|string|callable $when optional

Indicates when the field is not allowed to be empty. Valid values are false (never), 'create', 'update'. If a callable is passed then the field will be required to be not empty when the callback returns true.

Returns

$this

See Also

\Cake\Validation\Validator::allowEmptyString()

notEmptyTime() public

notEmptyTime(string $field, ?string $message, mixed $when)

Require a field to be a non-empty time.

Opposite to allowEmptyTime()

Parameters

string $field

The name of the field.

string|null $message optional

The message to show if the field is empty.

bool|string|callable $when optional

Indicates when the field is not allowed to be empty. Valid values are false (never), 'create', 'update'. If a callable is passed then the field will be required to be not empty when the callback returns true.

Returns

$this

See Also

\Cake\Validation\Validator::allowEmptyTime()

notEqualToField() public

notEqualToField(string $field, string $secondField, ?string $message, mixed $when)

Add a rule to compare one field is not equal to another.

Parameters

string $field

The field you want to apply the rule to.

string $secondField

The field you want to compare against.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::compareFields()

notEquals() public

notEquals(string $field, mixed $value, ?string $message, mixed $when)

Add a not equal to comparison rule to a field.

Parameters

string $field

The field you want to apply the rule to.

int|float $value

The value user data must be not be equal to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::comparison()

notSameAs() public

notSameAs(string $field, string $secondField, ?string $message, mixed $when)

Add a rule to compare that two fields have different values.

Parameters

string $field

The field you want to apply the rule to.

string $secondField

The field you want to compare against.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::compareFields()

numeric() public

numeric(string $field, ?string $message, mixed $when)

Add a numeric value validation rule to a field.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::numeric()

offsetExists() public

offsetExists(mixed $field)

Returns whether a rule set is defined for a field or not

Parameters

string $field

name of the field to check

Returns

bool

offsetGet() public

offsetGet(mixed $field)

Returns the rule set for a field

Parameters

string $field

name of the field to check

Returns

\Cake\Validation\ValidationSet

offsetSet() public

offsetSet(mixed $field, mixed $rules)

Sets the rule set for a field

Parameters

string $field

name of the field to set

array|\Cake\Validation\ValidationSet $rules

set of rules to apply to field

offsetUnset() public

offsetUnset(mixed $field)

Unsets the rule set for a field

Parameters

string $field

name of the field to unset

providers() public

providers()

Get the list of providers in this validator.

Returns

string[]

range() public

range(string $field, array $range, ?string $message, mixed $when)

Add a validation rule to ensure a field is within a numeric range

Parameters

string $field

The field you want to apply the rule to.

array $range

The inclusive upper and lower bounds of the valid range.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

Throws

InvalidArgumentException

See Also

\Cake\Validation\Validation::range()

regex() public

regex(string $field, string $regex, ?string $message, mixed $when)

Returns whether or not a field matches against a regular expression.

Parameters

string $field

Field name.

string $regex

Regular expression.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

remove() public

remove(string $field, ?string $rule)

Removes a rule from the set by its name

Example:

$validator
         ->remove('title', 'required')
         ->remove('user_id')

Parameters

string $field

The name of the field from which the rule will be removed

string|null $rule optional

the name of the rule to be removed

Returns

$this

requirePresence() public

requirePresence(mixed $field, mixed $mode, ?string $message)

Sets whether a field is required to be present in data array.

You can also pass array. Using an array will let you provide the following keys:

  • mode individual mode for field
  • message individual error message for field

You can also set mode and message for all passed fields, the individual setting takes precedence over group settings.

Parameters

string|array $field

the name of the field or list of fields.

bool|string|callable $mode optional

Valid values are true, false, 'create', 'update'. If a callable is passed then the field will be required only when the callback returns true.

string|null $message optional

The message to show if the field presence validation fails.

Returns

$this

sameAs() public

sameAs(string $field, string $secondField, ?string $message, mixed $when)

Add a rule to compare two fields to each other.

If both fields have the exact same value the rule will pass.

Parameters

string $field

The field you want to apply the rule to.

string $secondField

The field you want to compare against.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::compareFields()

scalar() public

scalar(string $field, ?string $message, mixed $when)

Add a validation rule to ensure that a field contains a scalar.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::isScalar()

setProvider() public

setProvider(string $name, mixed $object)

Associates an object to a name so it can be used as a provider. Providers are objects or class names that can contain methods used during validation of for deciding whether a validation rule can be applied. All validation methods, when called will receive the full list of providers stored in this validator.

Parameters

string $name

The name under which the provider should be set.

object|string $object

Provider object or class name.

Returns

$this

setStopOnFailure() public

setStopOnFailure(bool $stopOnFailure)

Whether to stop validation rule evaluation on the first failed rule.

When enabled the first failing rule per field will cause validation to stop. When disabled all rules will be run even if there are failures.

Parameters

bool $stopOnFailure optional

If to apply last flag.

Returns

$this

time() public

time(string $field, ?string $message, mixed $when)

Add a time format validation rule to a field.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::time()

uploadedFile() public

uploadedFile(string $field, array $options, ?string $message, mixed $when)

Add a validation rule to ensure the field is an uploaded file

For options see Cake\Validation\Validation::uploadedFile()

Parameters

string $field

The field you want to apply the rule to.

array $options

An array of options.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::uploadedFile()

url() public

url(string $field, ?string $message, mixed $when)

Add a validation rule to ensure a field is a URL.

This validator does not require a protocol.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::url()

urlWithProtocol() public

urlWithProtocol(string $field, ?string $message, mixed $when)

Add a validation rule to ensure a field is a URL.

This validator requires the URL to have a protocol.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::url()

utf8() public

utf8(string $field, ?string $message, mixed $when)

Add a validation rule to ensure a field contains only BMP utf8 bytes

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::utf8()

utf8Extended() public

utf8Extended(string $field, ?string $message, mixed $when)

Add a validation rule to ensure a field contains only utf8 bytes.

This rule will accept 3 and 4 byte UTF8 sequences, which are necessary for emoji.

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::utf8()

uuid() public

uuid(string $field, ?string $message, mixed $when)

Add a validation rule to ensure the field is a UUID

Parameters

string $field

The field you want to apply the rule to.

string|null $message optional

The error message when the rule fails.

string|callable|null $when optional

Either 'create' or 'update' or a callable that returns true when the validation rule should be applied.

Returns

$this

See Also

\Cake\Validation\Validation::uuid()

validate() public

validate(array $data, bool $newRecord)

Validates and returns an array of failed fields and their error messages.

Parameters

array $data

The data to be checked for errors

bool $newRecord optional

whether the data to be validated is new or to be updated.

Returns

array[]

Array of failed fields

Property Detail

$_allowEmptyFlags protected

Contains the flags which specify what is empty for each corresponding field.

Type

array

$_allowEmptyMessages protected

Contains the validation messages associated with checking the emptiness for each corresponding field.

Type

array

$_defaultProviders protected static

An associative array of objects or classes used as a default provider list

Type

array

$_fields protected

Holds the ValidationSet objects array

Type

\Cake\Validation\ValidationSet[]

$_presenceMessages protected

Contains the validation messages associated with checking the presence for each corresponding field.

Type

array

$_providers protected

An associative array of objects or classes containing methods used for validation

Type

array

$_stopOnFailure protected

Whether to apply last flag to generated rule(s).

Type

bool

$_useI18n protected

Whether or not to use I18n functions for translating default error messages

Type

bool

© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.1/class-Cake.Validation.Validator.html