if(!empty($params['id_account']) && !empty($params['password']) ){
$this->form_validation->set_rules('confPass', 'Confirmation Password', 'matches[password]');
}else{
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('confPass', 'Confirmation Password', 'required|matches[password]');
}
Если условие, которое вы написали выше, истинно, т. Е. Управление находится в том случае, если (ниже) блок
if(!empty($params['id_account']) && !empty($params['password']) )
вы не поставили условие для поля «пароль», у вас есть только правило подтверждения пароля,Что не совпадает ни с чем, и хотя пароли совпадают, оно всегда возвращает false.
Вам необходимо добавить правило проверки для пароля
$this->form_validation->set_rules('password', 'Password', 'required');
перед подтверждением пароля, которое ищет соответствующий пароль.
Если ваше условие гласит, что для него не требуется пароль, вы можете сделать что-то вроде
$this->form_validation->set_rules('password', 'Password', 'min_length[5]');
что-нибудь, что соответствует вашему условию, но не является «обязательным», например, trim или min_length
Надеюсь, это поможет.