KO 2.3.4 - acceso a la matriz de validación de devoluciones de llamada en modelos

StackOverflow https://stackoverflow.com/questions/2744237

  •  02-10-2019
  •  | 
  •  

Pregunta

Disculpas si esto es un descuido o una estupidez por mi parte, pero no puedo bastante averiguar cómo acceder a la matriz de validación de una devolución de llamada en un modelo (utilizando ORM y KO 2.3.4). Quiero ser capaz de añadir mensajes de error específicos a la matriz de validación si una falsa retornos de devolución de llamada.

por ejemplo Este método de registro:

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

Devolución de llamada:

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

Yo, obviamente, tener acceso al modelo actual de la devolución de llamada, pero me preguntaba cuál es la mejor manera de añadir error personalizado de la devolución de llamada sería?

¿Fue útil?

Solución

Su "devolución de llamada" no es una devolución de llamada, pero una regla. Lo que queremos es:

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

A continuación, su función se vería así:

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');
        }
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top