Class yii\mongodb\validators\MongoDateValidator

Inheritanceyii\mongodb\validators\MongoDateValidator » yii\validators\DateValidator
Available since extension's version2.0.4
Source Code https://github.com/yiisoft/yii2-mongodb/blob/master/src/validators/MongoDateValidator.php

MongoDateValidator is an enhanced version of DateValidator, which supports \MongoDate values.

Usage example:

class Customer extends yii\mongodb\ActiveRecord
{
    ...
    public function rules()
    {
        return [
            ['date', 'yii\mongodb\validators\MongoDateValidator', 'format' => 'MM/dd/yyyy']
        ];
    }
}

See also \yii\validators\DateValidator.

Public Properties

Hide inherited properties

Property Type Description Defined By
$mongoDateAttribute string The name of the attribute to receive the parsing result as \MongoDate instance. yii\mongodb\validators\MongoDateValidator

Property Details

Hide inherited properties

$mongoDateAttribute public property

The name of the attribute to receive the parsing result as \MongoDate instance. When this property is not null and the validation is successful, the named attribute will receive the parsing result as \MongoDate instance.

This can be the same attribute as the one being validated. If this is the case, the original value will be overwritten with the value after successful validation.

Method Details

Hide inherited methods

parseDateValue() protected method

protected void parseDateValue ( $value )
$value

                protected function parseDateValue($value)
{
    return $value instanceof UTCDateTime
        ? $value->toDateTime()->getTimestamp()
        : parent::parseDateValue($value);
}

            
validateAttribute() public method

public void validateAttribute ( $model, $attribute )
$model
$attribute

                public function validateAttribute($model, $attribute)
{
    $mongoDateAttribute = $this->mongoDateAttribute;
    if ($this->timestampAttribute === null) {
        $this->timestampAttribute = $mongoDateAttribute;
    }
    $originalErrorCount = count($model->getErrors($attribute));
    parent::validateAttribute($model, $attribute);
    $afterValidateErrorCount = count($model->getErrors($attribute));
    if ($originalErrorCount === $afterValidateErrorCount) {
        if ($this->mongoDateAttribute !== null) {
            $timestamp = $model->{$this->timestampAttribute};
            $mongoDateAttributeValue = $model->{$this->mongoDateAttribute};
            // ensure "dirty attributes" support :
            if (!($mongoDateAttributeValue instanceof UTCDateTime) || $mongoDateAttributeValue->sec !== $timestamp) {
                $model->{$this->mongoDateAttribute} = new UTCDateTime($timestamp * 1000);
            }
        }
    }
}