CUrlValidator
| Пакет | system.validators |
|---|---|
| Наследование | класс CUrlValidator » CValidator » CComponent |
| С тех пор | 1.0 |
| Исходный код | framework/validators/CUrlValidator.php |
Общедоступные свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| allowEmpty | boolean | указывает, может ли значение атрибута быть null или пустым. | CUrlValidator |
| attributes | array | список атрибутов, подлежащих проверке. | CValidator |
| builtInValidators | array | список встроенных валидаторов (имя=>класс) | CValidator |
| defaultScheme | string | умолчание схемы URI. | CUrlValidator |
| enableClientValidation | boolean | выполнять ли проверку на стороне клиента. | CValidator |
| except | array | список сценариев, для которых валидатор не должен применяться. | CValidator |
| message | string | пользовательское сообщение об ошибке. | CValidator |
| on | array | список сценариев, для которых валидатор должен применяться. | CValidator |
| pattern | string | регулярное выражение, используемое для проверки значения атрибута. | CUrlValidator |
| safe | boolean | являются ли атрибуты, указанные с этим валидатором, безопасными для массового назначения. | CValidator |
| skipOnError | boolean | пропустить эту проверку, если для текущего атрибута уже есть ошибка проверки. | CValidator |
| validSchemes | array | список схем URI, которые должны считаться допустимыми. | CUrlValidator |
| validateIDN | boolean | указывает, должна ли проверка учитывать IDN (международные доменные имена). | CUrlValidator |
Общедоступные методы
| Метод | Описание | Определено |
|---|---|---|
| __call() | Вызывает метод с заданным именем, который не является методом класса. | CComponent |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства нулевым. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в значение null. | CComponent |
| applyTo() | Возвращает значение, указывающее, применяется ли валидатор к указанному сценарию. | CValidator |
| asa() | Возвращает объект поведения с заданным именем. | CComponent |
| attachBehavior() | Присоединяет поведение к этому компоненту. | CComponent |
| attachBehaviors() | Присоединяет список поведений к компоненту. | CComponent |
| attachEventHandler() | Присоединяет обработчик событий к событию. | CComponent |
| canGetProperty() | Определяет, может ли свойство быть прочитано. | CComponent |
| canSetProperty() | Определяет, может ли свойство быть установлено. | CComponent |
| clientValidateAttribute() | Возвращает JavaScript, необходимый для проверки на стороне клиента. | CUrlValidator |
| createValidator() | Создаёт объект валидатора. | CValidator |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующий обработчик событий. | CComponent |
| disableBehavior() | Отключает присоединённое поведение. | CComponent |
| disableBehaviors() | Отключает все присоединённые поведения этого компонента. | CComponent |
| enableBehavior() | Включает присоединённое поведение. | CComponent |
| enableBehaviors() | Включает все присоединённые к этому компоненту поведения. | CComponent |
| evaluateExpression() | Вычисляет выражение PHP или обратный вызов в контексте этого компонента. | CComponent |
| getEventHandlers() | Возвращает список присоединённых обработчиков событий для события. | CComponent |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли присоединённые обработчики для события с заданным именем. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| raiseEvent() | Вызывает событие. | CComponent |
| validate() | Проверяет указанный объект. | CValidator |
| validateValue() | Проверяет статическое значение на предмет того, является ли оно допустимым URL-адресом. | CUrlValidator |
Защищённые методы
| Метод | Описание | Определено |
|---|---|---|
| addError() | Добавляет ошибку об указанном атрибуте к активной записи. | CValidator |
| isEmpty() | Проверяет, является ли данное значение пустым. | CValidator |
| validateAttribute() | Проверяет атрибут объекта. | CUrlValidator |
Подробное описание свойств
allowEmpty свойство
public boolean $allowEmpty;
указывает, может ли значение атрибута быть null или пустым. По умолчанию true, что означает, что если атрибут пуст, он считается допустимым.
defaultScheme свойство (доступно с версии 1.1.7)
public string $defaultScheme;
умолчание схемы URI. Если входные данные не содержат часть схемы, к ним будет добавлен префикс схемы по умолчанию (тем самым изменяя входные данные). По умолчанию null, что означает, что URL должен содержать часть схемы.
pattern свойство
public string $pattern;
регулярное выражение, используемое для проверки значения атрибута. С версии 1.1.7 в шаблоне может содержаться токен {schemes}, который будет заменён регулярным выражением, представляющим {@see validSchemes}.
validSchemes свойство (доступно с версии v1.1.7)
public array $validSchemes;
список схем URI, которые должны считаться допустимыми. По умолчанию http и https считаются допустимыми схемами.
validateIDN свойство (доступно с версии v1.1.13)
public boolean $validateIDN;
указывает, должна ли процедура проверки учитывать IDN (международные доменные имена). Значение по умолчанию — false, что означает, что проверка URL-адресов, содержащих IDN, всегда будет провалена.
Подробное описание методов
clientValidateAttribute() метод (доступен с версии v1.1.7)
public string clientValidateAttribute(CModel $object, string $attribute) | ||
| $object | CModel | объект данных, который проверяется |
| $attribute | строка | имя атрибута, который необходимо проверить. |
| {return} | строка | скрипт проверки на стороне клиента. |
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;
}
Возвращает JavaScript, необходимый для выполнения проверки на стороне клиента.
См. также
validateAttribute() метод
protected void validateAttribute(CModel $object, string $attribute) | ||
| $object | CModel | валидируемый объект |
| $attribute | строка | валидируемый атрибут |
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);
}
}
Проверяет атрибут объекта. Если обнаружена ошибка, сообщение об ошибке добавляется к объекту.
validateValue() метод (доступен с версии v1.1.1)
public mixed validateValue(string $value) | ||
| $value | строка | валидируемое значение |
| {return} | смешанный тип | false, если значение не является допустимым URL-адресом, в противном случае — возможно изменённое значение ({@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;
}
Проверяет статическое значение на предмет того, является ли оно допустимым URL-адресом. Обратите внимание, что этот метод не учитывает свойство allowEmpty. Этот метод предоставлен для того, чтобы вы могли вызывать его напрямую, не прибегая к механизму правил проверки модели.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CUrlValidator