Class ModelValidator
ModelValidator 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 as usually done with Model::$validate
definition array
- ModelValidator implements ArrayAccess, IteratorAggregate, Countable
Link: http://book.cakephp.org/2.0/en/data-validation.html
Copyright: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
License: MIT License
Location: Cake/Model/ModelValidator.php
Properties summary
-
$_behaviors
protectedHolds the list of behavior names that were attached when this object was createdarray
-
$_fields
protected -
$_methods
protectedarray
Holds the available custom callback methods, usually taken from model methods and behavior methods
-
$_model
protected -
$_modelMethods
protectedHolds the available custom callback methods from the modelarray
-
$_validate
protectedarray
The validators $validate property, used for checking whether validation rules definition changed in the model and should be refreshed in this class
Method Summary
- __construct() publicConstructor
- _parseRules() protected
Sets the CakeValidationSet objects from the
Model::$validate
property IfModel::$validate
is not set or empty, this method returns false. True otherwise. - _triggerBeforeValidate() protectedPropagates beforeValidate event
- _validateWithModels() protected
Runs validation for hasAndBelongsToMany associations that have 'with' keys set and data in the data set.
- _validationList() protectedProcesses the passed fieldList and returns the list of fields to be validated
- add() public
Adds a new rule to a field's rule set. If second argument is an array or instance of CakeValidationSet then rules list for the field will be replaced with second argument and third argument will be ignored.
- count() publicReturns the number of fields having validation rules
- errors() public
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.
- getField() public
Returns a CakeValidationSet object containing all validation rules for a field, if no params are passed then it returns an array with all CakeValidationSet objects for each field
- getIterator() publicReturns an iterator for each of the fields to be validated
- getMethods() public
Gets all possible custom methods from the Model and attached Behaviors to be used as validators
- getModel() publicGets the model related to this validator
- invalidate() public
Marks a field as invalid, optionally setting a message explaining why the rule failed
- offsetExists() publicReturns whether a rule set is defined for a field or not
- offsetGet() publicReturns the rule set for a field
- offsetSet() publicSets the rule set for a field
- offsetUnset() publicUnsets the rule set for a field
- remove() publicRemoves a rule from the set by its name
- setValidationDomain() publicSets the I18n domain for validation messages. This method is chainable.
- validateAssociated() publicValidates a single record, as well as all its directly associated records.
- validateMany() publicValidates multiple individual records for a single model
- validates() public
Returns true if all fields pass validation. Will validate hasAndBelongsToMany associations that use the 'with' key as well. Since
Model::_saveMulti
is incapable of exiting a save operation.
Method Detail
__construct()source public
__construct( Model $Model )
Constructor
Parameters
-
Model
$Model
- A reference to the Model the Validator is attached to
_parseRules()source protected
_parseRules( )
Sets the CakeValidationSet objects from the Model::$validate
property If Model::$validate
is not set or empty, this method returns false. True otherwise.
Returns
booleantrue if
Model::$validate
was processed, false otherwise_triggerBeforeValidate()source protected
_triggerBeforeValidate( array $options array() )
Propagates beforeValidate event
Parameters
- array
$options
optional array() - Options to pass to callback.
Returns
booleanTriggers
Model.beforeValidate $model, array($options)_validateWithModels()source protected
_validateWithModels( array $options )
Runs validation for hasAndBelongsToMany associations that have 'with' keys set and data in the data set.
Parameters
- array
$options
- Array of options to use on Validation of with models
Returns
booleanFailure of validation on with models.
See
Model::validates()_validationList()source protected
_validationList( array $fieldList array() )
Processes the passed fieldList and returns the list of fields to be validated
Parameters
- array
$fieldList
optional array() - list of fields to be used for validation
Returns
CakeValidationSet[]
List of validation rules to be applied
add()source public
add( string $field , string|array|CakeValidationSet $name , array|CakeValidationRule $rule null )
Adds a new rule to a field's rule set. If second argument is an array or instance of CakeValidationSet then rules list for the field will be replaced with second argument and third argument will be ignored.
Example:
$validator ->add('title', 'required', array('rule' => 'notBlank', 'required' => true)) ->add('user_id', 'valid', array('rule' => 'numeric', 'message' => 'Invalid User')) $validator->add('password', array( 'size' => array('rule' => array('lengthBetween', 8, 20)), 'hasSpecialCharacter' => array('rule' => 'validateSpecialchar', 'message' => 'not valid') ));
Parameters
- string
$field
- The name of the field where the rule is to be added
- string|array|
CakeValidationSet
$name
- name of the rule to be added or list of rules for the field
- array|
CakeValidationRule
$rule
optional null - or list of rules to be added to the field's rule set
Returns
ModelValidator
count()source public
count( )
Returns the number of fields having validation rules
Returns
integerImplementation of
Countable::count()
errors()source public
errors( string $options array() )
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
- string
$options
optional array() - An optional array of custom options to be made available in the beforeValidate callback
Returns
arrayArray of invalid fields
Triggers
Model.afterValidate $modelSee
ModelValidator::validates()getField()source public
getField( string $name null )
Returns a CakeValidationSet object containing all validation rules for a field, if no params are passed then it returns an array with all CakeValidationSet objects for each field
Parameters
- string
$name
optional null - [optional] The fieldname to fetch. Defaults to null.
Returns
CakeValidationSet
|array|nullgetIterator()source public
getIterator( )
Returns an iterator for each of the fields to be validated
Returns
ArrayIteratorImplementation of
IteratorAggregate::getIterator()
getMethods()source public
getMethods( )
Gets all possible custom methods from the Model and attached Behaviors to be used as validators
Returns
arrayList of callables to be used as validation methods
invalidate()source public
invalidate( string $field , string $message true )
Marks a field as invalid, optionally setting a message explaining why the rule failed
Parameters
- string
$field
- The name of the field to invalidate
- string
$message
optional true - Validation message explaining why the rule failed, defaults to true.
offsetExists()source 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
booleanImplementation of
ArrayAccess::offsetExists()
offsetGet()source public
offsetGet( string $field )
Returns the rule set for a field
Parameters
- string
$field
- name of the field to check
Returns
CakeValidationSet
Implementation of
ArrayAccess::offsetGet()
offsetSet()source public
offsetSet( string $field , array|CakeValidationSet $rules )
Sets the rule set for a field
Parameters
- string
$field
- name of the field to set
- array|
CakeValidationSet
$rules
- set of rules to apply to field
Implementation of
ArrayAccess::offsetSet()
offsetUnset()source public
offsetUnset( string $field )
Unsets the rule set for a field
Parameters
- string
$field
- name of the field to unset
Implementation of
ArrayAccess::offsetUnset()
remove()source public
remove( string $field , string $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
$rule
optional null - the name of the rule to be removed
Returns
ModelValidator
setValidationDomain()source public
setValidationDomain( string $validationDomain null )
Sets the I18n domain for validation messages. This method is chainable.
Parameters
- string
$validationDomain
optional null - [optional] The validation domain to be used.
Returns
ModelValidator
validateAssociated()source public
validateAssociated( array $data , array $options array() )
Validates a single record, as well as all its directly associated records.
Options
- atomic: If true (default), returns boolean. If false returns array.
- fieldList: Equivalent to the $fieldList parameter in Model::save()
- deep: If set to true, not only directly associated data , but deeper nested associated data is validated as well.
Warning: This method could potentially change the passed argument $data
, If you do not want this to happen, make a copy of $data
before passing it to this method
Parameters
- array
$data
- $data Record data to validate. This should be an array indexed by association name.
- array
$options
optional array() - Options to use when validating record data (see above), See also $options of validates().
Returns
array|booleanIf atomic: True on success, or false on failure. Otherwise: array similar to the $data array passed, but values are set to true/false depending on whether each record validated successfully.
validateMany()source public
validateMany( array $data , array $options array() )
Validates multiple individual records for a single model
Options
- atomic: If true (default), returns boolean. If false returns array.
- fieldList: Equivalent to the $fieldList parameter in Model::save()
- deep: If set to true, all associated data will be validated as well.
Warning: This method could potentially change the passed argument $data
, If you do not want this to happen, make a copy of $data
before passing it to this method
Parameters
- array
$data
- $data Record data to validate. This should be a numerically-indexed array
- array
$options
optional array() - Options to use when validating record data (see above), See also $options of validates().
Returns
mixedIf atomic: True on success, or false on failure. Otherwise: array similar to the $data array passed, but values are set to true/false depending on whether each record validated successfully.
validates()source public
validates( array $options array() )
Returns true if all fields pass validation. Will validate hasAndBelongsToMany associations that use the 'with' key as well. Since Model::_saveMulti
is incapable of exiting a save operation.
Will validate the currently set data. Use Model::set()
or Model::create()
to set the active data.
Parameters
- array
$options
optional array() - An optional array of custom options to be made available in the beforeValidate callback
Returns
booleanTrue if there are no errors
Properties detail
$_behaviorssource
protected array
Holds the list of behavior names that were attached when this object was created
array()
$_methodssource
protected array
Holds the available custom callback methods, usually taken from model methods and behavior methods
array()
$_modelsource
protected Model
Holds the reference to the model this Validator is attached to
array()
$_modelMethodssource
protected array
Holds the available custom callback methods from the model
array()
$_validatesource
protected array
The validators $validate property, used for checking whether validation rules definition changed in the model and should be refreshed in this class
array()
© 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.
https://api.cakephp.org/2.9/class-ModelValidator.html