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
- Cake\Validation\Validator implements ArrayAccess, IteratorAggregate, Countable
Link: http://book.cakephp.org/3.0/en/core-libraries/validation.html
Located at Validation/Validator.php
Method Detail
__debugInfosource public
__debugInfo( )
Get the printable version of this object.
Returns
array
array
_canBeEmptysource 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
boolean
bool
_checkPresencesource 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
boolean
bool
_fieldIsEmptysource protected
_fieldIsEmpty( mixed $data )
Returns true if the field is empty in the passed data array
Parameters
- mixed
$data
- value to check against
Returns
boolean
bool
_processRulessource protected
_processRules( string $field , Cake\Validation\ValidationSet $rules , array $data , boolean $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
- boolean
$newRecord
- whether is it a new record or an existing one
Returns
array
array
addsource public
add( string $field , array|string $name , array|Cake\Validation\ValidationRule $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 removed
- array|string
$name
- The alias for a single rule or multiple rules array
- array|
Cake\Validation\ValidationRule
$rule
optional [] - the rule to add
Returns
mixed
$this
addNestedsource public
addNested( string $field , Cake\Validation\Validator $validator )
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.
Returns
mixed
$this
addNestedManysource public
addNestedMany( string $field , Cake\Validation\Validator $validator )
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.
Returns
mixed
$this
allowEmptysource public
allowEmpty( string $field , boolean|string|callable $when true )
Allows a field to be empty.
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:
$validator->allowEmpty('email'); // Email can be empty $validator->allowEmpty('email', 'create'); // Email can be empty on create $validator->allowEmpty('email', 'update'); // Email can be empty on 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
$field
- the name of the field
- boolean|string|callable
$when
optional true - 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.
Returns
mixed
$this
countsource public
count( )
Returns the number of fields having validation rules
Returns
integer
int
Implementation of
Countable::count()
errorssource public
errors( array $data , boolean $newRecord true )
Returns an array of fields that have failed validation. On the current model. This method will actually run validation rules over data, not just return the messages.
Parameters
- array
$data
- The data to be checked for errors
- boolean
$newRecord
optional true - whether the data to be validated is new or to be updated.
Returns
array
Array of invalid fields
fieldsource public
field( string $name , Cake\Validation\ValidationSet $set null )
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
$set
optional null - The set of rules for field
Returns
Cake\Validation\ValidationSet
\Cake\Validation\ValidationSet
getIteratorsource public
getIterator( )
Returns an iterator for each of the fields to be validated
Returns
ArrayIterator
\ArrayIterator
Implementation of
IteratorAggregate::getIterator()
hasFieldsource 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
boolean
bool
isEmptyAllowedsource public
isEmptyAllowed( string $field , boolean $newRecord )
Returns whether or not a field can be left empty for a new or already existing record.
Parameters
- string
$field
- Field name.
- boolean
$newRecord
- whether the data to be validated is new or to be updated.
Returns
boolean
bool
isPresenceRequiredsource public
isPresenceRequired( string $field , boolean $newRecord )
Returns whether or not a field can be left out for a new or already existing record.
Parameters
- string
$field
- Field name.
- boolean
$newRecord
- Whether the data to be validated is new or to be updated.
Returns
boolean
bool
notEmptysource public
notEmpty( string $field , string $message null , boolean|string|callable $when false )
Sets a field to require a non-empty value.
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'; $validator->notEmpty('email'); // Email cannot be empty $validator->notEmpty('email', $message, 'create'); // Email can be empty on update $validator->notEmpty('email', $message, 'update'); // Email can be empty on create
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
$field
- the name of the field
- string
$message
optional null - The validation message to show if the field is not
- boolean|string|callable
$when
optional false - 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 be empty only when the callback returns false.
Returns
mixed
$this
offsetExistssource public
offsetExists( string $field )
Returns whether a rule set is defined for a field or not
Parameters
- string
$field
- name of the field to check
Returns
boolean
bool
Implementation of
ArrayAccess::offsetExists()
offsetGetsource public
offsetGet( string $field )
Returns the rule set for a field
Parameters
- string
$field
- name of the field to check
Returns
Cake\Validation\ValidationSet
\Cake\Validation\ValidationSet
Implementation of
ArrayAccess::offsetGet()
offsetSetsource public
offsetSet( string $field , array|Cake\Validation\ValidationSet $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
Implementation of
ArrayAccess::offsetSet()
offsetUnsetsource public
offsetUnset( string $field )
Unsets the rule set for a field
Parameters
- string
$field
- name of the field to unset
Implementation of
ArrayAccess::offsetUnset()
providersource public
provider( string $name , null|object|string $object null )
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.
If called with no arguments, it will return the provider stored under that name if it exists, otherwise it returns this instance of chaining.
Parameters
- string
$name
- The name under which the provider should be set.
- null|object|string
$object
optional null - Provider object or class name.
Returns
mixed
$this|object|string|null
removesource public
remove( string $field , string|null $rule null )
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 null - the name of the rule to be removed
Returns
mixed
$this
requirePresencesource public
requirePresence( string $field , boolean|string|callable $mode true , string|null $message null )
Sets whether a field is required to be present in data array.
Parameters
- string
$field
- the name of the field
- boolean|string|callable
$mode
optional true - 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 null - The message to show if the field presence validation fails.
Returns
mixed
$this
Constants summary
string | NESTED Used to flag nested rules created with addNested() and addNestedMany() | '_nested' |
Properties summary
© 2005–2016 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.
http://api.cakephp.org/3.1/class-Cake.Validation.Validator.html