У меня есть контроллер для обработки некоторой информации, которую можно сохранить или обновить в БД.
Я использую public $ validation для хранения массива с правилами проверки, которые будут выглядеть следующим образом:
public $validation = array(
array(
'field' => 'modelname[column1]',
'label' => 'Column 1',
'rules' => 'required'
),
array(
'field' => 'modelname[column1]',
'label' => 'Column 2',
'rules' => 'required'
),
);
и я использую свою собственную функцию проверки с обратными вызовами в той же самой проверке $. Как это:
array(
'field' => 'modelname[column3]',
'label' => 'Column 3',
'rules' => 'callback_column3|required'
),
array(
'field' => 'modelname[column4]',
'label' => 'Column4',
'rules' => 'callback_column4|required'
),
Который обрабатывается с помощью действия в контроллере.
Проблема в том, что:
Для добавления (сохранения) я должен проверить уникальность значения, это функция callback_column4 (скажем), и если она не уникальна, она возвращает false. Но я не могу вернуть false для редактирования (обновления), потому что я читаю и редактирую что-то, что, очевидно, находится в БД.
Итак, что я должен сделать, чтобы различать два разных действия при проверке.
PS: я уже пытался использовать подмассивы с именем Class / action (http://codeigniter.com/user_guide/libraries/form_validation.html#savingtoconfig), но я использую абстракцию Core_Model, которая играет роль вызова
$this->form_validation->set_rules($this->validation);
$this->form_validation->run()