English 中文(简体)
KO 2.3.4 - Accessing validation array from callbacks in models
原标题:

Apologies if this is an oversight or sheer stupidity on my part but I can t quite figure out how to access the validation array from a callback in a model (using ORM and KO 2.3.4). I want to be able to add specific error messages to the validation array if a callback returns false.

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

Callback:

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

I can obviously access the current model from the callback, but I was wondering what the best way to add custom error from the callback would be?

最佳回答

Your "callback" is not a callback, but a rule. What you want is:

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

Then your callback will look like this:

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 );
        }
    }
}
问题回答

暂无回答




相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...

热门标签