开发者

CodeIgniter: set_message for max_length[x]

How do you set an error message for max_length 开发者_运维问答and min_length rules. For instance, if I set a rule max_length[6], I'd like the error message to display Max characters allowed: 5


I got the same problem and even though this post is old, there's no correct answer.. You just have to use the string placeholder %s in second place of your message. In the documentation (http://codeigniter.com/user_guide/libraries/form_validation.html#settingerrors) there is an example for a field not being empty:

$this->form_validation->set_message('username_check', 'The %s field can not be the word "test"');

There, it uses the %s placeholder for the name of the field, but if you modify the 'max_length' message putting the field name first and the length second like this:

$this->form_validation->set_message('max_length', 'The field %s max length is %s');

it will work. Is not the best solution, but that one works for me. Hope it helps


application/language/en/en_lang.php I have this:

$lang['name'] = "Name";
$lang['form_required'] = "is required.";

application/language/es/es_lang.php I have this:

$lang['name'] = "Nombre";
$lang['form_required'] = "es requiero.";

application/controllers/yourController.php I have this:

$this->form_validation->set_rules('name', $this->lang->line('name'), 'required|alpha|xss_clean');

$this->form_validation->set_message('required', '%s ' . $this->lang->line('form_required'));

I hope this help!


@Daniel is correct. Per CodeIgniter's documentation, you can override the default error message for any validation rule (such as "min_length", "max_length", etc.) like this:

$this->form_validation->set_message('validation_rule', 'Your message here');

So, in your example you could do:

$this->form_validation->set_message('max_length', 'Max characters allowed: 5');

Simply include that where your validation rules exist.


gAMBOOKa,

create a 'new' rule that also checks for max_length

$this->form_validation->set_rules('username', 'Username', 'required|_max_length[12]');

and for the method..

function _max_length($val)
    {
        if (strlen($this->input->post('username')) > $val)
        {
                    $this->form_validation->set_message('_max_length', 'Max characters allowed: 5')
            return FALSE;
        }

        return TRUE;
    }

add this to your controller as a new rule and set the message like so ---^


CodeIgniter has one of the better documentations out of all the frameworks. Read the userguide on their site or the one in your CI directory.

http://codeigniter.com/user_guide/libraries/form_validation.html#settingerrors


Take a look in system/language/english/form_validation_lang.php and you'll find

$lang['max_length'] = "The %s field can not exceed %s characters in length.";

Which is easily overridden by copying it to

application/language/english/form_validation_lang.php

And changing it to the string you'd like. Do not edit the file in system/ directly, then it'll be overwritten if you upgrade CodeIgniter.


There is no need to add a new method. You may set a custom message to a form validation error by accessing the "max_length" rule as shown below.

$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]', array('required' => 'Username is required.','max_length' => 'Max characters allowed: 5')
);

Note: This is also applicable for "min_length" rule.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜