Logo: Uran web studio
Сделать сайт в Украине

Yii. Простой способ создать свое правило валидации

Быстрый, но не единственный, способ создать собственное правило валидации данных.

Сначала для этого мы в модели создаем новый метод, который будет использоваться в качестве валидатора:

/**
* Метод проверяет тотожность паролей, например, что новые пользователи вводят в форме регистрации на нашем сайте.
 * Этот метод является валидатором 'passwordMatch' для метода rules().
 */

public function passwordMatch ( $attribute ) {
    if ( $this->password !== $this->password2 )
            $this->addError ( $attribute, "Пароли не совпадают" );
}

Имя метода должно быть уникальним, то есть, не совпадать с именем уже существующего валидатора.

Этот метод в нашем случае принимает один параметр:

  • $attribute — название атрибута, который валидируется в данный момент

 

Далее, все что остается, это добавить новый валидатор в список правил проверки.

В списке правил указываем это правило валидации для нужного нам поля:

public function rules () {
        return array (
                ...
                array ( 'password', 'passwordMatch' ),
                ...
        );
}

Как Вы видите, внутри метода passwordMatch мы делаем вызов CModel::addError.
Данный метод регистрирует ошибку валидации. Принимает два параметра:

  • $attribute — имя атрибута, к которому относится ошибка
  • $error — сообщение об ошибке

 

Пример с передачей параметра нашему новому правилу валидации:

public function passwordMatch ( $attribute, $params ) {
        // $params - массив дополнително переданных параметров
        if ( $param['someParamName'] ) {
                // Do something with param...
        }
)

    if ( $this->password !== $this->password2 )
            $this->addError ( $attribute, "Пароли не совпадают" );
}

public function rules () {
    return array (
                ...
                array ( 'password', 'passwordMatch', 'someParamName'=>'some_value' ),
                ...
        );
}


Теги: Yii валидация свои правла валидации
2014-04-15

И еще полезные примеры JavaScript

Удалить елементы на странице по имени класса

Почему рассылки попадают в спам

вверх