Yii 自定义验证规则中存在重复验证

Yii 自定义验证规则中存在重复验证,yii,Yii,在模型规则中,我有自定义规则: array('source_id, postcode, state, fname, lname, email, address, city, birthday, gender, ip, phone,validation', 'validateCustom', 'on'=>'spam,normal'), 问题是,该规则执行12次(属性数为-1) 如何预防?我想验证所有这些参数1次,而不是x。谢谢你的帮助。我有个主意: class YourModel exte

在模型规则中,我有自定义规则:

array('source_id, postcode, state, fname, lname, email, address, city, birthday, gender, ip, phone,validation', 'validateCustom', 'on'=>'spam,normal'),
问题是,该规则执行12次(属性数为-1)

如何预防?我想验证所有这些参数1次,而不是x。谢谢你的帮助。

我有个主意:

class YourModel extends ActiveRecord
{

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

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

该规则对每个属性执行一次(它分别验证每个属性)。这是预期的行为。如果使用getter而不是属性实现其中一个属性,您将看到getter没有被调用12次。如果验证是相关的,您应该只将它们附加到单个属性。如果它们是独立的,你应该重新组织你的逻辑,这样每次对验证的调用只验证目标属性,而不检查其他属性。实际上它是独立的。将尝试转换为1属性。以下是附加到1属性不起作用的要点。@ineersa:您使用的验证规则完全错误,我不知道从何开始:/我做了类似的事情,但更容易。无论如何,谢谢你。
class YourModel extends ActiveRecord
{

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

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