KO 2.3.4 - 从模型中的回调中访问验证数组

时间:2010-04-30 11:46:20

标签: php kohana kohana-orm

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

e.g 这种注册方法:

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 个答案:

答案 0 :(得分: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');
        }
    }
}