Class yii\validators\CompareValidator
| Inheritance | yii\validators\CompareValidator » yii\validators\Validator » yii\base\Component » yii\base\BaseObject |
|---|---|
| Implements | yii\base\Configurable |
| Available since version | 2.0 |
| Source Code | https://github.com/yiisoft/yii2/blob/master/framework/validators/CompareValidator.php |
CompareValidator compares the specified attribute value with another value.
The value being compared with can be another attribute value (specified via $compareAttribute) or a constant (specified via $compareValue. When both are specified, the latter takes precedence. If neither is specified, the attribute will be compared with another attribute whose name is by appending "_repeat" to the source attribute name.
CompareValidator supports different comparison operators, specified via the $operator property.
The default comparison function is based on string values, which means the values are compared byte by byte. When comparing numbers, make sure to set the $type to TYPE_NUMBER to enable numeric comparison.
Public Properties
| Property | Type | Description | Defined By |
|---|---|---|---|
| $attributeNames | array | Attribute names. This property is read-only. | yii\validators\Validator |
| $attributes | array|string | Attributes to be validated by this validator. | yii\validators\Validator |
| $behaviors | yii\base\Behavior[] | List of behaviors attached to this component. This property is read-only. | yii\base\Component |
| $builtInValidators | array | List of built-in validators (name => class or configuration) | yii\validators\Validator |
| $compareAttribute | string | The name of the attribute to be compared with. | yii\validators\CompareValidator |
| $compareValue | mixed | The constant value to be compared with. | yii\validators\CompareValidator |
| $enableClientValidation | boolean | Whether to enable client-side validation for this validator. | yii\validators\Validator |
| $except | array|string | Scenarios that the validator should not be applied to. | yii\validators\Validator |
| $isEmpty | callable | A PHP callable that replaces the default implementation of isEmpty(). | yii\validators\Validator |
| $message | string | The user-defined error message. | yii\validators\CompareValidator |
| $on | array|string | Scenarios that the validator can be applied to. | yii\validators\Validator |
| $operator | string | The operator for comparison. | yii\validators\CompareValidator |
| $skipOnEmpty | boolean | Whether this validation rule should be skipped if the attribute value is null or an empty string. | yii\validators\Validator |
| $skipOnError | boolean | Whether this validation rule should be skipped if the attribute being validated already has some validation error according to some previous rules. | yii\validators\Validator |
| $type | string | The type of the values being compared. | yii\validators\CompareValidator |
| $validationAttributes | array | List of attribute names. This property is read-only. | yii\validators\Validator |
| $when | callable | A PHP callable whose return value determines whether this validator should be applied. | yii\validators\Validator |
| $whenClient | string | A JavaScript function name whose return value determines whether this validator should be applied on the client-side. | yii\validators\Validator |
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __call() | Calls the named method which is not a class method. | yii\base\Component |
| __clone() | This method is called after the object is created by cloning an existing one. | yii\base\Component |
| __construct() | Constructor. | yii\base\BaseObject |
| __get() | Returns the value of a component property. | yii\base\Component |
| __isset() | Checks if a property is set, i.e. defined and not null. | yii\base\Component |
| __set() | Sets the value of a component property. | yii\base\Component |
| __unset() | Sets a component property to be null. | yii\base\Component |
| addError() | Adds an error about the specified attribute to the model object. | yii\validators\Validator |
| attachBehavior() | Attaches a behavior to this component. | yii\base\Component |
| attachBehaviors() | Attaches a list of behaviors to the component. | yii\base\Component |
| behaviors() | Returns a list of behaviors that this component should behave as. | yii\base\Component |
| canGetProperty() | Returns a value indicating whether a property can be read. | yii\base\Component |
| canSetProperty() | Returns a value indicating whether a property can be set. | yii\base\Component |
| className() | Returns the fully qualified name of this class. | yii\base\BaseObject |
| clientValidateAttribute() | Returns the JavaScript needed for performing client-side validation. | yii\validators\CompareValidator |
| createValidator() | Creates a validator object. | yii\validators\Validator |
| detachBehavior() | Detaches a behavior from the component. | yii\base\Component |
| detachBehaviors() | Detaches all behaviors from the component. | yii\base\Component |
| ensureBehaviors() | Makes sure that the behaviors declared in behaviors() are attached to this component. | yii\base\Component |
| getAttributeNames() | Returns cleaned attribute names without the ! character at the beginning. |
yii\validators\Validator |
| getBehavior() | Returns the named behavior object. | yii\base\Component |
| getBehaviors() | Returns all behaviors attached to this component. | yii\base\Component |
| getClientOptions() | Returns the client-side validation options. | yii\validators\CompareValidator |
| getValidationAttributes() | Returns a list of attributes this validator applies to. | yii\validators\Validator |
| hasEventHandlers() | Returns a value indicating whether there is any handler attached to the named event. | yii\base\Component |
| hasMethod() | Returns a value indicating whether a method is defined. | yii\base\Component |
| hasProperty() | Returns a value indicating whether a property is defined for this component. | yii\base\Component |
| init() | Initializes the object. | yii\validators\CompareValidator |
| isActive() | Returns a value indicating whether the validator is active for the given scenario and attribute. | yii\validators\Validator |
| isEmpty() | Checks if the given value is empty. | yii\validators\Validator |
| off() | Detaches an existing event handler from this component. | yii\base\Component |
| on() | Attaches an event handler to an event. | yii\base\Component |
| trigger() | Triggers an event. | yii\base\Component |
| validate() | Validates a given value. | yii\validators\Validator |
| validateAttribute() | Validates a single attribute. | yii\validators\CompareValidator |
| validateAttributes() | Validates the specified object. | yii\validators\Validator |
Protected Methods
| Method | Description | Defined By |
|---|---|---|
| compareValues() | Compares two values with the specified operator. | yii\validators\CompareValidator |
| formatMessage() | Formats a mesage using the I18N, or simple strtr if \Yii::$app is not available. |
yii\validators\Validator |
| validateValue() | Validates a value. | yii\validators\CompareValidator |
Constants
| Constant | Value | Description | Defined By |
|---|---|---|---|
| TYPE_NUMBER | 'number' | Constant for specifying the comparison $type by numeric values. | yii\validators\CompareValidator |
| TYPE_STRING | 'string' | Constant for specifying the comparison $type by numeric values. | yii\validators\CompareValidator |
Property Details
The name of the attribute to be compared with. When both this property and $compareValue are set, the latter takes precedence. If neither is set, it assumes the comparison is against another attribute whose name is formed by appending '_repeat' to the attribute being validated. For example, if 'password' is being validated, then the attribute to be compared would be 'password_repeat'.
See also $compareValue.
The constant value to be compared with. When both this property and $compareAttribute are set, this property takes precedence.
See also $compareAttribute.
The user-defined error message. It may contain the following placeholders which will be replaced accordingly by the validator:
{attribute}: the label of the attribute being validated{value}: the value of the attribute being validated{compareValue}: the value or the attribute label to be compared with{compareAttribute}: the label of the attribute to be compared with{compareValueOrAttribute}: the value or the attribute label to be compared with
The operator for comparison. The following operators are supported:
==: check if two values are equal. The comparison is done is non-strict mode.===: check if two values are equal. The comparison is done is strict mode.!=: check if two values are NOT equal. The comparison is done is non-strict mode.!==: check if two values are NOT equal. The comparison is done is strict mode.>: check if value being validated is greater than the value being compared with.>=: check if value being validated is greater than or equal to the value being compared with.<: check if value being validated is less than the value being compared with.<=: check if value being validated is less than or equal to the value being compared with.
When you want to compare numbers, make sure to also set $type to number.
The type of the values being compared. The follow types are supported:
Method Details
Returns the JavaScript needed for performing client-side validation.
Calls getClientOptions() to generate options array for client-side validation.
You may override this method to return the JavaScript validation code if the validator can support client-side validation.
The following JavaScript variables are predefined and can be used in the validation code:
attribute: an object describing the the attribute being validated.value: the value being validated.messages: an array used to hold the validation error messages for the attribute.deferred: an array used to hold deferred objects for asynchronous validation$form: a jQuery object containing the form element
The attribute object contains the following properties:
id: a unique ID identifying the attribute (e.g. "loginform-username") in the formname: attribute name or expression (e.g. "[0]content" for tabular input)container: the jQuery selector of the container of the input fieldinput: the jQuery selector of the input field under the context of the formerror: the jQuery selector of the error tag under the context of the containerstatus: status of the input field, 0: empty, not entered before, 1: validated, 2: pending validation, 3: validating
| public string|null clientValidateAttribute ( $model, $attribute, $view ) | ||
| $model | yii\base\Model | The data model being validated |
| $attribute | string | The name of the attribute to be validated. |
| $view | yii\web\View | The view object that is going to be used to render views or view files containing a model form with this validator applied. |
| return | string|null | The client-side validation script. Null if the validator does not support client-side validation. |
|---|---|---|
Compares two values with the specified operator.
| protected boolean compareValues ( $operator, $type, $value, $compareValue ) | ||
| $operator | string | The comparison operator |
| $type | string | The type of the values being compared |
| $value | mixed | The value being compared |
| $compareValue | mixed | Another value being compared |
| return | boolean | Whether the comparison using the specified operator is true. |
|---|---|---|
Returns the client-side validation options.
This method is usually called from clientValidateAttribute(). You may override this method to modify options that will be passed to the client-side validation.
| public array getClientOptions ( $model, $attribute ) | ||
| $model | yii\base\Model | The model being validated |
| $attribute | string | The attribute name being validated |
| return | array | The client-side validation options |
|---|---|---|
Initializes the object.
This method is invoked at the end of the constructor after the object is initialized with the given configuration.
| public void init ( ) |
Validates a single attribute.
Child classes must implement this method to provide the actual validation logic.
| public void validateAttribute ( $model, $attribute ) | ||
| $model | yii\base\Model | The data model to be validated |
| $attribute | string | The name of the attribute to be validated. |
Validates a value.
A validator class can implement this method to support data validation out of the context of a data model.
| protected array|null validateValue ( $value ) | ||
| $value | mixed | The data value to be validated. |
| return | array|null | The error message and the array of parameters to be inserted into the error message.
} return null;
Null should be returned if the data is valid. |
|---|---|---|
| throws | yii\base\NotSupportedException | if the validator does not supporting data validation without a model |