2013-07-23 3 views
0

В правилах модели у меня есть правило:Дубликат проверки в пользовательском правиле проверки

array('source_id, postcode, state, fname, lname, email, address, city, birthday, gender, ip, phone,validation', 'validateCustom', 'on'=>'spam,normal'), 

Проблема заключается в том, что это правило выполняется 12 раз (количество атрибутов -1).

public function validateCustom() 
     { 
//here all validations done 
     } 

Как это предотвратить? Я хочу проверить все эти параметры 1 раз, а не x. Спасибо за любую помощь.

+1

Правила выполняющееся один раз для каждого атрибута (он проверяет каждый атрибут отдельно). Это ожидаемое поведение. Если вы реализуете один из атрибутов с помощью getter вместо свойства, вы увидите, что геттер не вызывается 12 раз. – Jon

+0

Если валидации связаны, вы должны прикрепить их только к одному атрибуту. Если они независимы, вы должны реорганизовать свою логику, чтобы каждый вызов проверки выполнял проверку только целевого атрибута без проверки других. – DCoder

+0

На самом деле его независимый. Будет пытаться атаковать 1 атрибут. вот суть, если хотите более плохой код)) https://gist.github.com/ineersa/6062995 – ineersa

ответ

1

У меня есть идея:

class YourModel extends ActiveRecord 
{ 

    public $ranValidate = false; 
    ....... 

    public function validateCustom($attribute, $params) 
    { 
     if($this->ranValidate == false) { 
      //Implement your code 
      $this->ranValidate = true; 
     } 
    } 
} 
+0

Я сделал что-то вроде этого, но проще. Спасибо, в любом случае. – ineersa

Смежные вопросы