From 41cc0908918f48d948fe1e1fc9c74fdec58b7a60 Mon Sep 17 00:00:00 2001 From: Eric Roberts Date: Tue, 24 Jan 2012 00:59:44 -0600 Subject: Better support for using field names and rule parameters in error messages. --- system/libraries/Form_validation.php | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'system/libraries/Form_validation.php') diff --git a/system/libraries/Form_validation.php b/system/libraries/Form_validation.php index 0a6a2af0d..ebd96e402 100644 --- a/system/libraries/Form_validation.php +++ b/system/libraries/Form_validation.php @@ -503,7 +503,7 @@ class CI_Form_validation { } // Build the error message - $message = sprintf($line, $this->_translate_fieldname($row['label'])); + $message = $this->_build_error_msg($line, $this->_translate_fieldname($row['label'])); // Save the error message $this->_field_data[$row['field']]['error'] = $message; @@ -651,7 +651,7 @@ class CI_Form_validation { } // Build the error message - $message = sprintf($line, $this->_translate_fieldname($row['label']), $param); + $message = $this->_build_error_msg($line, $this->_translate_fieldname($row['label']), $param); // Save the error message $this->_field_data[$row['field']]['error'] = $message; @@ -693,6 +693,27 @@ class CI_Form_validation { return $fieldname; } + // -------------------------------------------------------------------- + + /** + * Build an error message using the field and param. + * + * @param string The error message line + * @param string A field's human name + * @param mixed A rule's optional parameter + * @return string + */ + protected function _build_error_msg($line, $field = '', $param = '') + { + // Check for %s in the string for legacy support. + if (strpos($line, '%s') !== false) + { + return sprintf($line, $field, $param); + } + + return str_replace(array('{field}', '{param}'), array($field, $param), $line); + } + // -------------------------------------------------------------------- /** -- cgit v1.2.3-24-g4f1b