Question

Toutes mes excuses si c'est un oubli ou de la stupidité pure de ma part, mais je ne peux pas tout à fait comprendre comment accéder au tableau de validation d'un rappel dans un modèle (en utilisant ORM et KO 2.3.4). Je veux être en mesure d'ajouter des messages d'erreur spécifiques au tableau de validation si un rappel retourne faux.

par exemple Cette méthode de registre:

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

Callback:

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

Je ne peux évidemment accéder au modèle actuel de la fonction de rappel, mais je me demandais quelle est la meilleure façon d'ajouter une erreur personnalisée à partir de la fonction de rappel serait?

Était-ce utile?

La solution

Votre « rappel » est pas un rappel, mais une règle. Qu'est-ce que vous voulez est:

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

Ensuite, votre rappel ressemblera à ceci:

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');
        }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top