CodeIgniter Forums
custom validation - callbacks - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: Archived Discussions (https://forum.codeigniter.com/forumdisplay.php?fid=20)
+--- Forum: Archived Development & Programming (https://forum.codeigniter.com/forumdisplay.php?fid=23)
+--- Thread: custom validation - callbacks (/showthread.php?tid=60897)



custom validation - callbacks - El Forum - 07-26-2014

[eluser]Unknown[/eluser]
This is my extended class for form_validation:

Code:
<?php
class MY_Form_validation extends CI_Form_validation
{
    function __construct($config = array()) {
         parent::__construct($config);
    }
    function count_errors(){
        if (count($this->_error_array) === 0){
            return 0;
        }
        else
            return count($this->_error_array);
    }

    public function max_number($num, $val) {
        if($num > $val){
            $this->set_message("max_number", "The %s can not be greater then "  . $val);
            return false;
        }
    }

    public function min_number($num, $val) {
        if($num < $val){
            $this->set_message("min_number", "The %s can not be smaller then "  . $num);
            return false;
        }
    }

    public function error_array(){
        return $this->_error_array;
    }
}

And then in controller I set up rule like this for example "num" field:

Code:
$this->form_validation->set_rules('num', "Number", 'required|numeric|min_number[1]|max_number[99]');

For example 56 passes but also 1903.
But if num field is 0 it works.
So, this is working only for min_num but does not work for max_num.
What I am doing wrong here?


custom validation - callbacks - El Forum - 07-26-2014

[eluser]CroNiX[/eluser]
Try returning true if it passes. Is there a reason why you aren't just using the less_than, greater_than native rules?

Also your error message should say "than" instead of "then".


custom validation - callbacks - El Forum - 07-26-2014

[eluser]Unknown[/eluser]
Well I need this, not less_than or greater_than. I need to write more complicated validation so I try with this to simple validation. Ok, I will try with true if passes.
Thanks!