Пользовательские ошибки проверки CodeIgniter для каждого правила для каждого поля

Я использую CodeIngiter 2.1 и хочу определить пользовательские ошибки проверки для каждого правила для каждого поля. Поля следующие.

array(
'field' => 'firstname',
'rules' => 'required',
    'error' => 'This field cannot be empty.'
),
array(
'field' => 'email',
'rules' => 'required',
    'error' => 'The email cannot be empty.'
)

Но в CodeIgniter для одного правила определено только одно сообщение об ошибке. Итак, как переопределить это, и, пожалуйста, предложите несколько решений для получения различных ошибок для конкретного поля. Работа ценится больше.


person Sanganabasu    schedule 18.03.2013    source источник


Ответы (2)


Попробуйте использовать функцию CI:

   set_message();

Все собственные сообщения об ошибках находятся в следующем языковом файле:

   language/english/form_validation_lang.php

Чтобы установить собственное сообщение, вы можете либо отредактировать этот файл, либо использовать следующую функцию:

   $this->form_validation->set_message('rule', 'Error Message');

подробнее о set_message здесь

Надеюсь, это поможет;

person sandip    schedule 18.03.2013
comment
В частности, для вопроса ОП он мог бы использовать $this->form_validation->set_message('required','%s cannot be empty'); - person Joel Kinzel; 28.03.2014
comment
Мы можем иметь копию файла system/language/english/form_validation_lang.php (папка языка системы) в application/language/english/form_validation_lang.php (папка языка приложения) и выполнять любые настройки, которые захотим. - person masterFly; 13.11.2016

Недавно я сделал этот собственный вариант сообщения об ошибке для моего приложения codeigniter 3.0-dev. Надеюсь, это поможет кому-нибудь там.

https://gist.github.com/abdmaster/7287962

Чтобы использовать его (пример),

$this->form_validation->set_rules('name','Name','required|alpha',array('required' => 'Please fill the field %s .');`

Он будет работать с базовыми моделями, такими как MY_Model от jamierumbelow. В вашей модели вы делаете что-то вроде этого:

public $validate = array(
  'display_name'  => array(
    'field' => 'display_name',
    'label' => 'Display Name',
    'rules' => 'trim|required|xss_clean|valid_fullname|is_unique[users_model.display_name]',
    'error_msg' => array(
      'is_unique'  => 'The name in %s is already being used by someone.',
    ),
  ),
);

Остальные - это то, как мы обычно используем. Надеюсь, этих примеров достаточно.

Я не пробовал в v2.1.x, но надеюсь, что это сработает. Возможно, придется внести небольшие коррективы.

person Ahmedul Haque Abid    schedule 03.11.2013
comment
Просто для тех, кому интересно, это не будет работать при установке 2.x CI. Похоже, они изменили основную библиотеку (добавили несколько дополнительных методов и изменили способ построения сообщений об ошибках). - person Joel Kinzel; 28.03.2014