2012-08-17 75 views
4

比方说,我有一个ActiveRecord具有以下验证规则:为Yii的验证规则外键

public function rules() { 
    return array(
     array('model', 'required'), 
     // .... 
     array('model', 'exist', 
      'allowEmpty' => false, 
      'attributeName' => 'id', 
      'className' => 'Model', 
      'message' => 'The specified model does not exist.' 
     ) 
    ); 
} 

的第一条规则迫使model场不为空,第二个检查它有一个一致的值( model是外键)。

如果我试图验证一个表格,我留下空的字段model我得到2个错误,一个用于第一个规则,一个用于第二个规则。

我想收到只有“不能为空”的错误信息。

当第一条规则不满意时,有没有办法停止验证?

回答

10

您可以使用skipOnError

return array(
    array('model', 'required'), 
    // .... 
    array('model', 'exist', 
     'allowEmpty' => false, 
     'attributeName' => 'id', 
     'className' => 'Model', 
     'message' => 'The specified model does not exist.', 
     'skipOnError'=>true 
    ) 
); 

编辑:

有人评论了关于上述是不明确的,可能是因为字段名这里也model。所以在实施时请记住这一点。

+1

太棒了!这是我需要的。谢谢! – Andrea 2012-08-17 16:22:35

+0

欢迎你,随时乐意帮忙 – 2012-08-17 16:25:03