CRegularExpressionValidator
包 | system.validators |
---|---|
继承 | class CRegularExpressionValidator » CValidator » CComponent |
可用自 | 1.0 |
源码 | framework/validators/CRegularExpressionValidator.php |
CRegularExpressionValidator validates that the attribute value matches to the specified regular expression.
You may invert the validation logic with help of the not property (available since 1.1.5).
公共属性
属性 | 类型 | 描述 | 被定义在 |
---|---|---|---|
allowEmpty | boolean | whether the attribute value can be null or empty. | CRegularExpressionValidator |
attributes | array | list of attributes to be validated. | CValidator |
builtInValidators | array | list of built-in validators (name=>class) | CValidator |
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 |
not | boolean | whether to invert the validation logic. | CRegularExpressionValidator |
on | array | list of scenarios that the validator should be applied. | CValidator |
pattern | string | the regular expression to be matched with | CRegularExpressionValidator |
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 |
公共方法
方法 | 描述 | 被定义在 |
---|---|---|
__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. | CRegularExpressionValidator |
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 |
受保护的方法
方法 | 描述 | 被定义在 |
---|---|---|
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. | CRegularExpressionValidator |
属性详情
allowEmpty
属性
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.
not
属性
(自版本 v1.1.5 可用)
public boolean $not;
whether to invert the validation logic. Defaults to false. If set to true, the regular expression defined via pattern should NOT match the attribute value.
pattern
属性
public string $pattern;
the regular expression to be matched with
方法详情
clientValidateAttribute()
方法
(自版本 v1.1.7 可用)
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. |
源码: framework/validators/CRegularExpressionValidator.php#70 (显示)
public function clientValidateAttribute($object,$attribute)
{
if($this->pattern===null)
throw new CException(Yii::t('yii','The "pattern" property must be specified with a valid regular expression.'));
$message=$this->message!==null ? $this->message : Yii::t('yii','{attribute} is invalid.');
$message=strtr($message, array(
'{attribute}'=>$object->getAttributeLabel($attribute),
));
$pattern=$this->pattern;
$pattern=preg_replace('/\\\\x\{?([0-9a-fA-F]+)\}?/', '\u$1', $pattern);
$delim=substr($pattern, 0, 1);
$endpos=strrpos($pattern, $delim, 1);
$flag=substr($pattern, $endpos + 1);
if ($delim!=='/')
$pattern='/' . str_replace('/', '\\/', substr($pattern, 1, $endpos - 1)) . '/';
else
$pattern = substr($pattern, 0, $endpos + 1);
if (!empty($flag))
$pattern .= preg_replace('/[^igm]/', '', $flag);
return "
if(".($this->allowEmpty ? "jQuery.trim(value)!='' && " : '').($this->not ? '' : '!')."value.match($pattern)) {
messages.push(".CJSON::encode($message).");
}
";
}
Returns the JavaScript needed for performing client-side validation.
validateAttribute()
方法
protected void validateAttribute(CModel $object, string $attribute)
| ||
$object | CModel | the object being validated |
$attribute | string | the attribute being validated |
源码: framework/validators/CRegularExpressionValidator.php#44 (显示)
protected function validateAttribute($object,$attribute)
{
$value=$object->$attribute;
if($this->allowEmpty && $this->isEmpty($value))
return;
if($this->pattern===null)
throw new CException(Yii::t('yii','The "pattern" property must be specified with a valid regular expression.'));
// reason of array checking explained here: https://github.com/yiisoft/yii/issues/1955
if(is_array($value) ||
(!$this->not && !preg_match($this->pattern,$value)) ||
($this->not && preg_match($this->pattern,$value)))
{
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} is invalid.');
$this->addError($object,$attribute,$message);
}
}
Validates the attribute of the object. If there is any error, the error message is added to the object.