Я думаю, что разумнее было бы использовать функцию обратного вызова Codeigniter (что-то похожее на приведенное ниже).Следующие работы, но может быть возможно упростить его еще больше.Если ничего другого, это отправная точка.
Создайте две функции обратного вызова (я назвал их custom_required и custom_check_length ) и поместите их в нижней части вашего контроллера(или там, где вы чувствуете необходимость).
private function _custom_required($str, $func) {
switch($func) {
case 'name':
$this->form_validation->set_message('custom_required', 'Enter your name');
return (trim($str) == '') ? FALSE : TRUE;
break;
case 'second':
$this->form_validation->set_message('custom_required', 'The variables are required');
return (trim($str) == '') ? FALSE : TRUE;
break;
}
}
и ...
private function _custom_check_length($str, $params) {
$val = explode(',', $params);
$min = $val[0];
$max = $val[1];
if(strlen($str) <= $max && strlen($str) >= $min) {
return TRUE;
} elseif(strlen($str) < $min) {
$this->form_validation->set_message('custom_check_length', 'Min length ' . $min);
return FALSE;
} elseif(strlen($str) > $max) {
$this->form_validation->set_message('custom_check_length', 'Max length ' . $max);
return FALSE;
}
}
Эти две функции заботятся о set_message аспекте проверки вашей формы.Чтобы установить правила , вам просто нужно вызвать эти две функции, поставив перед именем функции callback_ .
Итак ...
$this->form_validation->set_rules('name', 'Name', 'callback__custom_required[name]|callback__custom_check_length[6,12]');
$this->form_validation->set_rules('second', 'Second', 'callback__custom_required[second]|callback__custom_check_length[3,5]');
Надеюсь, что это как-то поможет !!