требуется конструкторское решение

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
Аватара пользователя
RusAlex
Сообщения: 324
Зарегистрирован: 2010.08.29, 15:30

требуется конструкторское решение

Сообщение RusAlex »

Есть модель, есть несколько полей в модели, с доступными значениями 0/1. В зависимости от этих полей, требуются разные валидации для остальных полей модели.
Пока я это реализовал через переопределение метода validate в модели, присваивая необходимый сценарий в зависимости от условий. Выглядит он так:

Код: Выделить всё

    public function validate($attributes=NULL,$clearErrors=true)
    {
        $result = true;
        if($this->payment_type==0) {
            $this->scenario = 'bankRequired';
            $result = parent::validate(array( 'account_holder','account_number','bank_name','bank_code'),false) && $result;
        }
        if($this->settlement==0) {
            $this->scenario = 'previousRequired';
            $result = parent::validate(array('previous_supplier','previous_client_number','counter_number','previous_volume')
                ,false) && $result;
        }
        unset($this->scenario);
        return parent::validate($attributes,false) && $result;
    }
 
если в валидации по сценариям не перечислять аттрибуты, то ошибки появляются трижды в массиве getErrors(). Чувствую что что-то я делаю не так. Прошу совета у знающих.
Ответить