Да, вы отправляете данные формы в функции контроллера. Затем эта функция обрабатывает данные и вызывает представление.
Если вы попробуете это любым другим способом, вы попадете в адский код.
Одна функция может обрабатывать исходное отображение формы и отправку этой формы.
Просто проверьте, была ли отправлена форма, если это так, обработайте ее данные, иначе отобразите форму.
function login(){
if($this->input->post('submitted')==1){
//process the form data
}else{
//show the form
}
}