Welcome Guest, Not a member yet? Register   Sign In
Custom validation error messages per rule
#9

[eluser]codex[/eluser]
Last part:

Code:
function run()
    {
        // Do we even have any data to process?  Mm?
        if (count($_POST) == 0 OR count($this->_rules) == 0)
        {
            return FALSE;
        }
    
        // Load the language file containing error messages
        $this->load('validation');
                            
        // Cycle through the rules and test for errors
        foreach ($this->_rules as $field => $rules)
        {
            //Explode out the rules!
            $ex = explode('|', $rules);

            // Is the field required?  If not, if the field is blank we'll move on to the next test
            if ( ! in_array('required', $ex, TRUE))
            {
                if ( ! isset($_POST[$field]) OR $_POST[$field] == '')
                {
                    continue;
                }
            }
            
            
            if ( ! isset($_POST[$field]))
            {            
                if (in_array('isset', $ex, TRUE) OR in_array('required', $ex))
                {
                    if ( ! isset($this->_error_messages['isset']))
                    {
                        if (FALSE === ($line = $this->line($field, 'isset'))) // Use internal 'line' function
                        {
                            $line = 'The field was not set';
                        }                            
                    }
                    else
                    {
                        $line = $this->_error_messages['default']['isset']; // Add default
                    }
                    
                    // Build the error message
                    $mfield = ( ! isset($this->_fields[$field])) ? $field : $this->_fields[$field];
                    $message = sprintf($line, $mfield);

                    // Set the error variable.  Example: $this->username_error
                    $error = $field.'_error';
                    $this->$error = $this->_error_prefix.$message.$this->_error_suffix;
                    $this->_error_array[] = $message;
                }
                        
                continue;
            }
    
            
            $this->_current_field = $field;

            // Cycle through the rules!
            foreach ($ex as $rule)
            {
                // Strip the parameter (if exists) from the rule
                // Rules can contain a parameter: max_length[5]
                $param = FALSE;
                if (preg_match("/(.*?)\[(.*?)\]/", $rule, $match))
                {
                    $rule    = $match[1];
                    $param    = $match[2];
                }
                                
                if ( ! method_exists($this, $rule))
                {
                    
                    if (function_exists($rule))
                    {
                        $_POST[$field] = $rule($_POST[$field]);
                        $this->$field = $_POST[$field];
                    }
                                        
                    continue;
                }
                
                $result = $this->$rule($_POST[$field], $param);
                
                            
                // Did the rule test negatively?  If so, grab the error.
                if ($result === FALSE)
                {
                    if ( ! isset($this->_error_messages[$field][$rule]))
                    {
                        if (FALSE === ($line = $this->line($field, $rule)))
                        {
                            $line = $this->line('default', $rule);
                        }                        
                    }
                    else
                    {
                        $line = $this->_error_messages[$field][$rule];
                    }
                                    
                    // Build the error message
                    $mfield = ( ! isset($this->_fields[$field])) ? $field : $this->_fields[$field];
                    $mparam = ( ! isset($this->_fields[$param])) ? $param : $this->_fields[$param];
                    $message = sprintf($line, $mfield, $mparam);

                    // Set the error variable.  Example: $this->username_error
                    $error = $field.'_error';
                    $this->$error = $this->_error_prefix.$message.$this->_error_suffix;

                    // Add the error to the error array
                    $this->_error_array[] = $message;                
                    continue 2;
                }                
            }
        }
        
        $total_errors = count($this->_error_array);

            
        if ($total_errors > 0)
        {
            $this->_safe_form_data = TRUE;
        }
        
        $this->set_fields();

        // Did we end up with any errors?
        if ($total_errors == 0)
        {
            return TRUE;
        }
        
        // Generate the error string
        foreach ($this->_error_array as $val)
        {
            $this->error_string .= $this->_error_prefix.$val.$this->_error_suffix."\n";
        }

        return FALSE;
    }


Messages In This Thread
Custom validation error messages per rule - by El Forum - 08-13-2008, 03:54 PM
Custom validation error messages per rule - by El Forum - 08-13-2008, 06:30 PM
Custom validation error messages per rule - by El Forum - 08-13-2008, 07:31 PM
Custom validation error messages per rule - by El Forum - 08-14-2008, 04:30 AM
Custom validation error messages per rule - by El Forum - 08-14-2008, 11:19 AM
Custom validation error messages per rule - by El Forum - 08-14-2008, 08:10 PM
Custom validation error messages per rule - by El Forum - 08-14-2008, 08:29 PM
Custom validation error messages per rule - by El Forum - 08-14-2008, 08:31 PM
Custom validation error messages per rule - by El Forum - 08-14-2008, 08:32 PM
Custom validation error messages per rule - by El Forum - 08-18-2008, 12:49 AM
Custom validation error messages per rule - by El Forum - 08-18-2008, 01:08 AM
Custom validation error messages per rule - by El Forum - 08-19-2008, 02:10 PM
Custom validation error messages per rule - by El Forum - 08-19-2008, 02:33 PM
Custom validation error messages per rule - by El Forum - 08-19-2008, 02:37 PM
Custom validation error messages per rule - by El Forum - 08-19-2008, 02:57 PM
Custom validation error messages per rule - by El Forum - 08-19-2008, 03:19 PM
Custom validation error messages per rule - by El Forum - 08-19-2008, 03:29 PM
Custom validation error messages per rule - by El Forum - 08-19-2008, 03:39 PM
Custom validation error messages per rule - by El Forum - 08-19-2008, 05:00 PM
Custom validation error messages per rule - by El Forum - 08-20-2008, 12:16 AM
Custom validation error messages per rule - by El Forum - 08-20-2008, 12:31 AM
Custom validation error messages per rule - by El Forum - 08-20-2008, 12:48 AM
Custom validation error messages per rule - by El Forum - 08-20-2008, 01:22 AM
Custom validation error messages per rule - by El Forum - 08-20-2008, 01:59 AM
Custom validation error messages per rule - by El Forum - 08-20-2008, 02:52 AM
Custom validation error messages per rule - by El Forum - 08-20-2008, 04:00 AM
Custom validation error messages per rule - by El Forum - 08-20-2008, 04:10 AM



Theme © iAndrew 2016 - Forum software by © MyBB