CodeIgniter: set_message для max_length [x]

Как установить сообщение об ошибке max_lengthи min_lengthправила. Например, если я установлю правило max_length[6], я бы хотел, чтобы сообщение об ошибке отображалось Max characters allowed: 5

8.11.2009 19:52:18
7 ОТВЕТОВ
РЕШЕНИЕ

gAMBOOKa,

создать «новое» правило, которое также проверяет max_length

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

и для метода ..

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;
    }

добавьте это в свой контроллер в качестве нового правила и установите сообщение следующим образом --- ^

0
9.11.2009 01:49:01

CodeIgniter имеет одну из лучших документов из всех. Прочтите руководство пользователя на их сайте или в вашем каталоге CI.

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

0
8.11.2009 20:33:00

@ Даниель правильный. Согласно документации CodeIgniter , вы можете переопределить сообщение об ошибке по умолчанию для любого правила проверки (например, «min_length», «max_length» и т. Д.) Следующим образом:

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

Итак, в вашем примере вы можете сделать:

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

Просто включите это там, где существуют ваши правила проверки.

1
8.11.2009 23:02:42
Я знаю, что нужно переопределить сообщение по умолчанию, но как мне включить параметр длины в новое сообщение? 5 в этом случае. У меня есть несколько полей различной длины, я бы предпочел не писать сообщения для каждого из них.
HyderA 9.11.2009 00:18:48

У меня та же проблема, и хотя этот пост старый, правильного ответа нет. Вам просто нужно использовать строку-заполнитель% s на втором месте вашего сообщения. В документации (http://codeigniter.com/user_guide/libraries/form_validation.html#settingerrors) есть пример того, что поле не является пустым:

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

Там он использует заполнитель% s для имени поля, но если вы измените сообщение 'max_length', поместив имя поля первым, а длину - следующим образом:

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

это будет работать. Это не лучшее решение, но это работает для меня. Надеюсь, поможет

3
4.12.2010 06:08:56

application / language / en / en_lang.php У меня есть это:

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

application / language / es / es_lang.php У меня есть это:

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

application / controllers / yourController.php У меня есть это:

$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'));

Я надеюсь, что это поможет!

3
18.09.2012 17:55:11

Загляните внутрь, system/language/english/form_validation_lang.phpи вы найдете

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

Который легко перезаписать, скопировав его в

application/language/english/form_validation_lang.php

И изменив его на строку, которую вы хотите. Вы не редактировать файл system/напрямую, то он будет перезаписан при обновлении CodeIgniter.

0
18.09.2012 21:18:37

Нет необходимости добавлять новый метод. Вы можете установить для пользовательского сообщения ошибку проверки формы, обратившись к правилу «max_length», как показано ниже.

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

Примечание: это также применимо к правилу "min_length".

0
15.04.2020 11:58:03