Browse Source

Finished js validation for URL validator.

tags/2.0.0-alpha
Qiang Xue 12 years ago
parent
commit
5069c29b98
  1. 20
      framework/assets/yii.validation.js
  2. 1
      framework/validators/FileValidator.php
  3. 40
      framework/validators/UrlValidator.php

20
framework/assets/yii.validation.js

@ -81,6 +81,16 @@ yii.validation = (function ($) {
valid || messages.push(options.message);
},
regularExpression: function (value, messages, options) {
if (options.skipOnEmpty && isEmpty(value)) {
return;
}
if (!value.match(options.pattern)) {
messages.push(options.message)
}
},
email: function (value, messages, options) {
if (options.skipOnEmpty && isEmpty(value)) {
return;
@ -91,14 +101,18 @@ yii.validation = (function ($) {
valid || messages.push(options.message);
},
regularExpression: function (value, messages, options) {
url: function (value, messages, options) {
if (options.skipOnEmpty && isEmpty(value)) {
return;
}
if (options.defaultScheme && !value.match(/:\/\//)) {
value = options.defaultScheme + '://' + value;
}
if (!value.match(options.pattern)) {
messages.push(options.message)
messages.push(options.message);
}
}
},
};
})(jQuery);

1
framework/validators/FileValidator.php

@ -8,7 +8,6 @@
namespace yii\validators;
use Yii;
use yii\helpers\FileHelper;
use yii\web\UploadedFile;
/**

40
framework/validators/UrlValidator.php

@ -8,6 +8,9 @@
namespace yii\validators;
use Yii;
use yii\helpers\Html;
use yii\helpers\JsExpression;
use yii\helpers\Json;
/**
* UrlValidator validates that the attribute value is a valid http or https URL.
@ -100,40 +103,27 @@ class UrlValidator extends Validator
*/
public function clientValidateAttribute($object, $attribute)
{
$message = strtr($this->message, array(
'{attribute}' => $object->getAttributeLabel($attribute),
'{value}' => $object->$attribute,
));
if (strpos($this->pattern, '{schemes}') !== false) {
$pattern = str_replace('{schemes}', '(' . implode('|', $this->validSchemes) . ')', $this->pattern);
} else {
$pattern = $this->pattern;
}
$js = "
if(!value.match($pattern)) {
messages.push(" . json_encode($message) . ");
}
";
if ($this->defaultScheme !== null) {
$js = "
if(!value.match(/:\\/\\//)) {
value=" . json_encode($this->defaultScheme) . "+'://'+value;
}
$js
";
}
$options = array(
'pattern' => new JsExpression($pattern),
'message' => Html::encode(strtr($this->message, array(
'{attribute}' => $object->getAttributeLabel($attribute),
'{value}' => $object->$attribute,
))),
);
if ($this->skipOnEmpty) {
$js = "
if($.trim(value)!='') {
$js
}
";
$options['skipOnEmpty'] = 1;
}
if ($this->defaultScheme !== null) {
$options['defaultScheme'] = $this->defaultScheme;
}
return $js;
return 'yii.validation.url(value, messages, ' . Json::encode($options) . ');';
}
}

Loading…
Cancel
Save