KO 2.3.4 - modellerinde geriçağırımlarının erişme doğrulama dizi

1 Cevap php

Özür dilemek bu benim parçası bir dikkatsizlik ya da düpedüz aptallık ama ben oldukça (ORM ve KO 2.3.4 kullanarak) bir modelde bir geri gelen doğrulama dizi erişmek için nasıl bilemiyorum eğer. Ben bir geri arama false döndürürse doğrulama diziye özgü hata mesajları eklemek mümkün olmak istiyorum.

e.g This register method:

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);
}

Geri arama:

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

Açıkçası geri arama gelen akım modeli erişebilir, ama ben geri arama gelen özel hatayı eklemek için en iyi yolu ne olacağını merak ediyorum?

1 Cevap

Sizin "geri" bir geri çağırma, ama bir kural değildir. Ne istiyorum:

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

Sonra geri bu gibi görünecektir:

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');
        }
    }
}