1
votes

I am working on already built codeigniter application. I am working on enhancements. One of the enhancement is to change the validation messages. So I checked the validation messages are drive through CI_Form_validation library in codeigniter. I want manage to set the custom messages using the "set_message".

$this->form_validation->set_message('required', 'Please enter %s.');

This is triggering for all fields where the values is empty. Which is good. But I have few select fields and radio buttons the application. For those message should change from "Please enter %s" to "Please select %s". I tried callback methods mentioned in the " How can I setup custom error messages for each form field in Codeigniter? "

And also I have tried the method mentioned in the following links

1) " https://github.com/EllisLab/CodeIgniter/wiki/Custom-Validation-Errors-per-Field ".
2) " http://www.witheringtree.com/2011/09/custom-codeigniter-validation-methods/ ".

Is there any way to set the different custom messages for different fields? If so please give me the suggestion. There is already a file called MY_Form_validation in the application (which is mentioned in the second link) with some custom functions. Custom validations are triggering in that file except the custom function written by me. (I know you think may be I have written an faulty code! But there is only simple echo statement in that function. Just for testing only I have put an echo statement).

1
The first link you've provided is actually to a question that I provided the answer for!! Can you post some of the code you've already tried? That way it'll help to try and figure out why it's not working for you. - MY_Mark
Hey Mark, The callback function is worked with some modifications to your answer. Those are removing _ from the beginning of the callback function and removed second _ between callback and < function_name >. So the code is changed as "function custom_required()" and the calling is "callback_custom_required()". - Kiran

1 Answers

1
votes

You wouldn't be able to create a generic function to do this as codeigniter has no way of knowing how the information was posted as it just receives it as an array.

What you could do is create MY_Form_validation.php in application/libraries

class MY_Form_validation extends CI_Form_validation
{

    public function required_select($val)
    {
        if ($this->required($val) === FALSE) {
            $this->set_message('required_select', 'Please select %s');
            return FALSE;
        }

        return TRUE;
    }

}

then when creating the rules for form validation

$this->form_validation->set_rules('dropdown', 'Dropdown', 'required_select');

Obviously, replace dropdown with the name of the element.

Hope this helps!