Commit 5069c29b by Qiang Xue

Finished js validation for URL validator.

parent 4b30fe8b
...@@ -81,6 +81,16 @@ yii.validation = (function ($) { ...@@ -81,6 +81,16 @@ yii.validation = (function ($) {
valid || messages.push(options.message); 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) { email: function (value, messages, options) {
if (options.skipOnEmpty && isEmpty(value)) { if (options.skipOnEmpty && isEmpty(value)) {
return; return;
...@@ -91,14 +101,18 @@ yii.validation = (function ($) { ...@@ -91,14 +101,18 @@ yii.validation = (function ($) {
valid || messages.push(options.message); valid || messages.push(options.message);
}, },
regularExpression: function (value, messages, options) { url: function (value, messages, options) {
if (options.skipOnEmpty && isEmpty(value)) { if (options.skipOnEmpty && isEmpty(value)) {
return; return;
} }
if (!value.match(options.pattern)) { if (options.defaultScheme && !value.match(/:\/\//)) {
messages.push(options.message) value = options.defaultScheme + '://' + value;
} }
if (!value.match(options.pattern)) {
messages.push(options.message);
} }
},
}; };
})(jQuery); })(jQuery);
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
namespace yii\validators; namespace yii\validators;
use Yii; use Yii;
use yii\helpers\FileHelper;
use yii\web\UploadedFile; use yii\web\UploadedFile;
/** /**
......
...@@ -8,6 +8,9 @@ ...@@ -8,6 +8,9 @@
namespace yii\validators; namespace yii\validators;
use Yii; 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. * UrlValidator validates that the attribute value is a valid http or https URL.
...@@ -100,40 +103,27 @@ class UrlValidator extends Validator ...@@ -100,40 +103,27 @@ class UrlValidator extends Validator
*/ */
public function clientValidateAttribute($object, $attribute) public function clientValidateAttribute($object, $attribute)
{ {
$message = strtr($this->message, array(
'{attribute}' => $object->getAttributeLabel($attribute),
'{value}' => $object->$attribute,
));
if (strpos($this->pattern, '{schemes}') !== false) { if (strpos($this->pattern, '{schemes}') !== false) {
$pattern = str_replace('{schemes}', '(' . implode('|', $this->validSchemes) . ')', $this->pattern); $pattern = str_replace('{schemes}', '(' . implode('|', $this->validSchemes) . ')', $this->pattern);
} else { } else {
$pattern = $this->pattern; $pattern = $this->pattern;
} }
$js = " $options = array(
if(!value.match($pattern)) { 'pattern' => new JsExpression($pattern),
messages.push(" . json_encode($message) . "); 'message' => Html::encode(strtr($this->message, array(
} '{attribute}' => $object->getAttributeLabel($attribute),
"; '{value}' => $object->$attribute,
if ($this->defaultScheme !== null) { ))),
$js = " );
if(!value.match(/:\\/\\//)) {
value=" . json_encode($this->defaultScheme) . "+'://'+value;
}
$js
";
}
if ($this->skipOnEmpty) { if ($this->skipOnEmpty) {
$js = " $options['skipOnEmpty'] = 1;
if($.trim(value)!='') { }
$js if ($this->defaultScheme !== null) {
} $options['defaultScheme'] = $this->defaultScheme;
";
} }
return $js; return 'yii.validation.url(value, messages, ' . Json::encode($options) . ');';
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment