You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

7.5 KiB

Model validation reference

This guide section doesn't describe how validation works but instead describes all Yii validators and their parameters. In order to learn model validation basics please refer to Model, Validation subsection.

Standard Yii validators

Standard Yii validators could be specified using aliases instead of referring to class names. Here's the list of all validators bundled with Yii with their most useful properties:

boolean: BooleanValidator

Checks if the attribute value is a boolean value.

  • trueValue, the value representing true status. (1)
  • falseValue, the value representing false status. (0)
  • strict, whether to compare the type of the value and trueValue/falseValue. (false)

captcha: CaptchaValidator

Validates that the attribute value is the same as the verification code displayed in the CAPTCHA. Should be used together with CaptchaAction.

  • caseSensitive whether the comparison is case sensitive. (false)
  • captchaAction the route of the controller action that renders the CAPTCHA image. ('site/captcha')

compare: CompareValidator

Compares the specified attribute value with another value and validates if they are equal.

  • compareAttribute the name of the attribute to be compared with. (currentAttribute_repeat)
  • compareValue the constant value to be compared with.
  • operator the operator for comparison. ('==')

date: DateValidator

Verifies if the attribute represents a date, time or datetime in a proper format.

default: DefaultValueValidator

Sets the attribute to be the specified default value.

  • value the default value to be set to the specified attributes.

double: NumberValidator

Validates that the attribute value is a number.

  • max limit of the number. (null)
  • min lower limit of the number. (null)

email: EmailValidator

Validates that the attribute value is a valid email address.

  • allowName whether to allow name in the email address (e.g. John Smith <john.smith@example.com>). (false).
  • checkMX whether to check the MX record for the email address. (false)
  • checkPort whether to check port 25 for the email address. (false)
  • enableIDN whether validation process should take into account IDN (internationalized domain names). (false)

exist: ExistValidator

Validates that the attribute value exists in a table.

  • targetClass the ActiveRecord class name or alias of the class that should be used to look for the attribute value being validated. (ActiveRecord class of the attribute being validated)
  • targetAttribute the ActiveRecord attribute name that should be used to look for the attribute value being validated. (name of the attribute being validated)

file: FileValidator

Verifies if an attribute is receiving a valid uploaded file.

  • types a list of file name extensions that are allowed to be uploaded. (any)
  • minSize the minimum number of bytes required for the uploaded file.
  • maxSize the maximum number of bytes required for the uploaded file.
  • maxFiles the maximum file count the given attribute can hold. (1)

filter: FilterValidator

Converts the attribute value according to a filter.

  • filter PHP callback that defines a filter.

Typically a callback is either the name of PHP function:

['password', 'filter', 'filter' => 'trim'],

Or an anonymous function:

['text', 'filter', 'filter' => function ($value) {
	// here we are removing all swear words from text
	return $newValue;
}],

in: RangeValidator

Validates that the attribute value is among a list of values.

  • range list of valid values that the attribute value should be among.
  • strict whether the comparison is strict (both type and value must be the same). (false)
  • not whether to invert the validation logic. (false)

inline: InlineValidator

Uses a custom function to validate the attribute. You need to define a public method in your model class which will evaluate the validity of the attribute. For example, if an attribute needs to be divisible by 10. In the rules you would define: ['attributeName', 'myValidationMethod'],.

Then, your own method could look like this:

public function myValidationMethod($attribute) {
    if(($attribute % 10) != 0) {
         $this->addError($attribute, 'cannot divide value by 10');
    }
}

integer: NumberValidator

Validates that the attribute value is an integer number.

  • max limit of the number. (null)
  • min lower limit of the number. (null)

match: RegularExpressionValidator

Validates that the attribute value matches the specified pattern defined by regular expression.

  • pattern the regular expression to be matched with.
  • not whether to invert the validation logic. (false)

required: RequiredValidator

Validates that the specified attribute does not have null or empty value.

  • requiredValue the desired value that the attribute must have. (any)
  • strict whether the comparison between the attribute value and requiredValue is strict. (false)

safe: SafeValidator

Serves as a dummy validator whose main purpose is to mark the attributes to be safe for massive assignment.

string: StringValidator

Validates that the attribute value is of certain length.

  • length specifies the length limit of the value to be validated. Can be exactly X, [min X], [min X, max Y].
  • max maximum length. If not set, it means no maximum length limit.
  • min minimum length. If not set, it means no minimum length limit.
  • encoding the encoding of the string value to be validated. (\yii\base\Application::charset)

unique: UniqueValidator

Validates that the attribute value is unique in the corresponding database table.

  • targetClass the ActiveRecord class name or alias of the class that should be used to look for the attribute value being validated. (ActiveRecord class of the attribute being validated)
  • targetAttribute the ActiveRecord attribute name that should be used to look for the attribute value being validated. (name of the attribute being validated)

url: UrlValidator

Validates that the attribute value is a valid http or https URL.

  • validSchemes list of URI schemes which should be considered valid. ['http', 'https']
  • defaultScheme the default URI scheme. If the input doesn't contain the scheme part, the default scheme will be prepended to it. (null)
  • enableIDN whether validation process should take into account IDN (internationalized domain names). (false)

Validating values out of model context

Sometimes you need to validate a value that is not bound to any model such as email. In Yii Validator class has validateValue method that can help you with it. Not all validator classes have it implemented but the ones that can operate without model do. In our case to validate an email we can do the following:

$email = 'test@example.com';
$validator = new yii\validators\EmailValidator();
if ($validator->validate($email, $error)) {
	echo 'Email is valid.';
} else {
	echo $error;
}

TBD: refer to http://www.yiiframework.com/wiki/56/ for the format