Frage

Entschuldigt, wenn dies ein Versehen oder schiere Dummheit meinerseits, aber ich kann nicht ganz herausfinden, wie die Validierung Array in einem Modell von einem Rückruf zuzugreifen (mit ORM und KO 2.3.4). Ich möchte in der Lage, spezifische Fehlermeldungen an die Validierung Array, wenn ein Rückruf false zurück hinzuzufügen.

z Dieses Register Methode:

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

Rückruf:

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

Ich kann natürlich das aktuelle Modell aus dem Rückruf zugreifen, aber ich frage mich, was der beste Weg, individuelle Fehler aus dem Rückruf hinzufügen würde?

War es hilfreich?

Lösung

Ihr „Rückruf“ ist kein Rückruf, sondern eine Regel. Was Sie wollen, ist:

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

Dann wird Ihr Rückruf wird wie folgt aussehen:

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');
        }
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top