Package | system.validators |
---|---|
Inheritance | class CUrlValidator » CValidator » CComponent |
Since | 1.0 |
Source Code | framework/validators/CUrlValidator.php |
Property | Type | Description | Defined By |
---|---|---|---|
allowEmpty | boolean | whether the attribute value can be null or empty. | CUrlValidator |
attributes | array | list of attributes to be validated. | CValidator |
builtInValidators | array | list of built-in validators (name=>class) | CValidator |
defaultScheme | string | the default URI scheme. | CUrlValidator |
enableClientValidation | boolean | whether to perform client-side validation. | CValidator |
except | array | list of scenarios that the validator should not be applied to. | CValidator |
message | string | the user-defined error message. | CValidator |
on | array | list of scenarios that the validator should be applied. | CValidator |
pattern | string | the regular expression used to validate the attribute value. | CUrlValidator |
safe | boolean | whether attributes listed with this validator should be considered safe for massive assignment. | CValidator |
skipOnError | boolean | whether this validation rule should be skipped when there is already a validation error for the current attribute. | CValidator |
validSchemes | array | list of URI schemes which should be considered valid. | CUrlValidator |
validateIDN | boolean | whether validation process should care about IDN (internationalized domain names). | CUrlValidator |
Method | Description | Defined By |
---|---|---|
__call() | Calls the named method which is not a class method. | CComponent |
__get() | Returns a property value, an event handler list or a behavior based on its name. | CComponent |
__isset() | Checks if a property value is null. | CComponent |
__set() | Sets value of a component property. | CComponent |
__unset() | Sets a component property to be null. | CComponent |
applyTo() | Returns a value indicating whether the validator applies to the specified scenario. | CValidator |
asa() | Returns the named behavior object. | CComponent |
attachBehavior() | Attaches a behavior to this component. | CComponent |
attachBehaviors() | Attaches a list of behaviors to the component. | CComponent |
attachEventHandler() | Attaches an event handler to an event. | CComponent |
canGetProperty() | Determines whether a property can be read. | CComponent |
canSetProperty() | Determines whether a property can be set. | CComponent |
clientValidateAttribute() | Returns the JavaScript needed for performing client-side validation. | CUrlValidator |
createValidator() | Creates a validator object. | CValidator |
detachBehavior() | Detaches a behavior from the component. | CComponent |
detachBehaviors() | Detaches all behaviors from the component. | CComponent |
detachEventHandler() | Detaches an existing event handler. | CComponent |
disableBehavior() | Disables an attached behavior. | CComponent |
disableBehaviors() | Disables all behaviors attached to this component. | CComponent |
enableBehavior() | Enables an attached behavior. | CComponent |
enableBehaviors() | Enables all behaviors attached to this component. | CComponent |
evaluateExpression() | Evaluates a PHP expression or callback under the context of this component. | CComponent |
getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent |
hasEvent() | Determines whether an event is defined. | CComponent |
hasEventHandler() | Checks whether the named event has attached handlers. | CComponent |
hasProperty() | Determines whether a property is defined. | CComponent |
raiseEvent() | Raises an event. | CComponent |
validate() | Validates the specified object. | CValidator |
validateValue() | Validates a static value to see if it is a valid URL. | CUrlValidator |
Method | Description | Defined By |
---|---|---|
addError() | Adds an error about the specified attribute to the active record. | CValidator |
isEmpty() | Checks if the given value is empty. | CValidator |
validateAttribute() | Validates the attribute of the object. | CUrlValidator |
public boolean $allowEmpty;
whether the attribute value can be null or empty. Defaults to true, meaning that if the attribute is empty, it is considered valid.
public string $defaultScheme;
the default URI scheme. If the input doesn't contain the scheme part, the default scheme will be prepended to it (thus changing the input). Defaults to null, meaning a URL must contain the scheme part.
public string $pattern;
the regular expression used to validate the attribute value. Since version 1.1.7 the pattern may contain a {schemes} token that will be replaced by a regular expression which represents the {@see validSchemes}.
public array $validSchemes;
list of URI schemes which should be considered valid. By default, http and https are considered to be valid schemes.
public boolean $validateIDN;
whether validation process should care about IDN (internationalized domain names). Default value is false which means that validation of URLs containing IDN will always fail.
public string clientValidateAttribute(CModel $object, string $attribute) | ||
$object | CModel | the data object being validated |
$attribute | string | the name of the attribute to be validated. |
{return} | string | the client-side validation script. |
public function clientValidateAttribute($object,$attribute)
{
if($this->validateIDN)
{
Yii::app()->getClientScript()->registerCoreScript('punycode');
// punycode.js works only with the domains - so we have to extract it before punycoding
$validateIDN='
var info = value.match(/^(.+:\/\/|)([^/]+)/);
if (info)
value = info[1] + punycode.toASCII(info[2]);
';
}
else
$validateIDN='';
$message=$this->message!==null ? $this->message : Yii::t('yii','{attribute} is not a valid URL.');
$message=strtr($message, array(
'{attribute}'=>$object->getAttributeLabel($attribute),
));
if(strpos($this->pattern,'{schemes}')!==false)
$pattern=str_replace('{schemes}','('.implode('|',$this->validSchemes).')',$this->pattern);
else
$pattern=$this->pattern;
$js="
$validateIDN
if(!value.match($pattern)) {
messages.push(".CJSON::encode($message).");
}
";
if($this->defaultScheme!==null)
{
$js="
if(!value.match(/:\\/\\//)) {
value=".CJSON::encode($this->defaultScheme)."+'://'+value;
}
$js
";
}
if($this->allowEmpty)
{
$js="
if(jQuery.trim(value)!='') {
$js
}
";
}
return $js;
}
Returns the JavaScript needed for performing client-side validation.
protected void validateAttribute(CModel $object, string $attribute) | ||
$object | CModel | the object being validated |
$attribute | string | the attribute being validated |
protected function validateAttribute($object,$attribute)
{
$value=$object->$attribute;
if($this->allowEmpty && $this->isEmpty($value))
return;
if(($value=$this->validateValue($value))!==false)
$object->$attribute=$value;
else
{
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} is not a valid URL.');
$this->addError($object,$attribute,$message);
}
}
Validates the attribute of the object. If there is any error, the error message is added to the object.
public mixed validateValue(string $value) | ||
$value | string | the value to be validated |
{return} | mixed | false if the the value is not a valid URL, otherwise the possibly modified value ({@see defaultScheme}) |
public function validateValue($value)
{
if(is_string($value) && strlen($value)<2000) // make sure the length is limited to avoid DOS attacks
{
if($this->defaultScheme!==null && strpos($value,'://')===false)
$value=$this->defaultScheme.'://'.$value;
if($this->validateIDN)
$value=$this->encodeIDN($value);
if(strpos($this->pattern,'{schemes}')!==false)
$pattern=str_replace('{schemes}','('.implode('|',$this->validSchemes).')',$this->pattern);
else
$pattern=$this->pattern;
if(preg_match($pattern,$value))
return $this->validateIDN ? $this->decodeIDN($value) : $value;
}
return false;
}
Validates a static value to see if it is a valid URL. Note that this method does not respect allowEmpty property. This method is provided so that you can call it directly without going through the model validation rule mechanism.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CUrlValidator