Создание правил валидации

1-ый способ: Замыкание

Создать свой способ валидации можно через замыкание (англ. Closure), также такой способ ещё называют «анонимные функции».

На примере ниже показан пример создания валидации для параметра «color».

public function rules()
{
    return array(
        ['title','required'],
        ['color', function ($attribute, $params) {
            if ($this->$attribute != 'green') {
                $this->addError($attribute, 'Поле «'.$attribute.'» должно содержать название цвета');
            }
        }],
    );
}

2-ой способ: Создание правила

Отдельное правило для валидации создаётся как обычный метод, который затем указывается в методе rules().

public function rules()
{
    return array(
        ['title','required'],
        ['color', 'isColor'], // пользовательская валидация
    );
}

public function isColor($attribute, $params)
{
    if ($this->$attribute != 'green') {
        $this->addError($attribute, 'Поле «'.$attribute.'» должно содержать название цвета');
    }
}