yii\validators\NumberValidator::clientValidateAttribute PHP Method

clientValidateAttribute() public method

public clientValidateAttribute ( $model, $attribute, $view )
    public function clientValidateAttribute($model, $attribute, $view)
    {
        $label = $model->getAttributeLabel($attribute);
        $options = ['pattern' => new JsExpression($this->integerOnly ? $this->integerPattern : $this->numberPattern), 'message' => Yii::$app->getI18n()->format($this->message, ['attribute' => $label], Yii::$app->language)];
        if ($this->min !== null) {
            // ensure numeric value to make javascript comparison equal to PHP comparison
            // https://github.com/yiisoft/yii2/issues/3118
            $options['min'] = is_string($this->min) ? (double) $this->min : $this->min;
            $options['tooSmall'] = Yii::$app->getI18n()->format($this->tooSmall, ['attribute' => $label, 'min' => $this->min], Yii::$app->language);
        }
        if ($this->max !== null) {
            // ensure numeric value to make javascript comparison equal to PHP comparison
            // https://github.com/yiisoft/yii2/issues/3118
            $options['max'] = is_string($this->max) ? (double) $this->max : $this->max;
            $options['tooBig'] = Yii::$app->getI18n()->format($this->tooBig, ['attribute' => $label, 'max' => $this->max], Yii::$app->language);
        }
        if ($this->skipOnEmpty) {
            $options['skipOnEmpty'] = 1;
        }
        ValidationAsset::register($view);
        return 'yii.validation.number(value, messages, ' . Json::htmlEncode($options) . ');';
    }

Usage Example

Beispiel #1
0
 /**
  * https://github.com/yiisoft/yii2/issues/3118
  */
 public function testClientValidateComparison()
 {
     $val = new NumberValidator(['min' => 5, 'max' => 10]);
     $model = new FakedValidationModel();
     $js = $val->clientValidateAttribute($model, 'attr_number', new View(['assetBundles' => ['yii\\validators\\ValidationAsset' => true]]));
     $this->assertContains('"min":5', $js);
     $this->assertContains('"max":10', $js);
     $val = new NumberValidator(['min' => '5', 'max' => '10']);
     $model = new FakedValidationModel();
     $js = $val->clientValidateAttribute($model, 'attr_number', new View(['assetBundles' => ['yii\\validators\\ValidationAsset' => true]]));
     $this->assertContains('"min":5', $js);
     $this->assertContains('"max":10', $js);
     $val = new NumberValidator(['min' => 5.65, 'max' => 13.37]);
     $model = new FakedValidationModel();
     $js = $val->clientValidateAttribute($model, 'attr_number', new View(['assetBundles' => ['yii\\validators\\ValidationAsset' => true]]));
     $this->assertContains('"min":5.65', $js);
     $this->assertContains('"max":13.37', $js);
     $val = new NumberValidator(['min' => '5.65', 'max' => '13.37']);
     $model = new FakedValidationModel();
     $js = $val->clientValidateAttribute($model, 'attr_number', new View(['assetBundles' => ['yii\\validators\\ValidationAsset' => true]]));
     $this->assertContains('"min":5.65', $js);
     $this->assertContains('"max":13.37', $js);
 }
All Usage Examples Of yii\validators\NumberValidator::clientValidateAttribute