2010-04-30 98 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