2010-04-30 67 views
0

道歉,如果这是我的一个疏忽或纯粹的愚蠢,但我不能完全弄清楚如何从模型中的回调访问验证数组(使用ORM和KO 2.3.4)。如果回调返回false,我希望能够向验证数组添加特定的错误消息。KO 2.3.4 - 从模型中的回调访问验证阵列

如 该寄存器方法:

public function register(array & $array, $save = FALSE) 
{ 
    // Initialise the validation library and setup some rules 
    $array = Validation::factory($array) 
      ->pre_filter('trim') 
      ->add_rules('email', 'required', 'valid::email', array($this, 'email_available')) 
      ->add_rules('confirm_email', 'matches[email]') 
      ->add_rules('password', 'required', 'length[5,42]') 
      ->add_rules('confirm_password', 'matches[password]'); 

    return ORM::validate($array, $save); 
} 

回调:

public function email_available($value) 
{ 
    return ! (bool) $this->db 
     ->where('email', $value) 
     ->count_records($this->table_name); 
} 

我可以明显地从回调访问当前的模式,但我想知道什么是最好的方法,从添加自定义错误回调将是?

回答

1

你的“回调”不是回调,而是一个规则。你想要的是:

$array->add_callback('email', array($this, 'email_available')); 

那么你的回调将是这样的:

public function email_available(Validation $array, $input) 
{ 
    if ($value = $array[$input]) 
    { 
     $result = (bool) $this->db 
      ->where('email', $value) 
      ->count_records($this->table_name); 

     if (! $result) 
     { 
      $array->add_error($input, 'Email address is not available'); 
     } 
    } 
} 
+0

谢谢SH - 搞混了规则和回调之间 – kenny99 2010-05-24 08:47:30