Resulta que en todas las redirecciónes que hago me da el típico mensaje:
Cannot modify header information - headers already sent by (...).
El problema es que no logro encontrar dónde está la supuesta salida al navegador en mi controlador y/o modelo, dado que las vistas nunca entran en acción....
El código de una de las funciones de mi controlador es el siguiente (todas las demás presentan el mismo problema, ya que copio, pego, y cambio los parámetros para crear las otras funciones).
Código PHP:
function categorias($accion=''){
$this->load->model('Admin_model');
$this->load->helper(array('url','form','date'));
$this->load->library(array('user_agent','pagination','form_validation'));
if(empty($accion)){
if(!$this->uri->segment(4)){ $pag = $this->uri->segment(4); } else { $pag = 1; }
$categorias = $this->Admin_model->categorias($pag);
$datos_vista = array('categorias'=>$categorias);
$this->load->view('admin/inc_head');
$this->load->view('admin/inc_menu');
$this->load->view('admin/categorias/view',$datos_vista);
$this->load->view('admin/inc_foot');
} elseif($accion=="nuevo"){
$habilitado = "Si";
date_default_timezone_set('America/Argentina/Tucuman');
$datestring = "%d/%m/%Y %H:%i:%s";
$time = time();
$fecha = mdate($datestring, $time);
if($_POST){
$this->form_validation->set_rules('nombre','Nombre de la Categoría','required|min_length[4]|max_length[40]');
if ($this->form_validation->run() == TRUE){
$query = "Insert into cms_categorias (nombre,habilitado,created) values
('".$_POST['nombre']."','Si','".$fecha."')";
$this->Admin_model->query($query);
redirect('/admin/categorias/','location');
}
}
$this->load->view('admin/inc_head');
$this->load->view('admin/inc_menu');
$this->load->view('admin/categorias/add');
$this->load->view('admin/inc_foot');
} elseif(substr($accion,0,4)=="hab-"){
$trozo = explode("-",$accion);
if($trozo[2]=="Si"){ $nuevo_estado = "No"; } else { $nuevo_estado = "Si"; }
$query = "Update cms_categorias set habilitado='".$nuevo_estado."' where Id='".$trozo[1]."'";
if($this->Admin_model->query($query)){
redirect('/admin/categorias/');
}
} elseif(substr($accion,0,4)=="del-"){
$trozo = explode("-",$accion);
$query = "Delete from cms_categorias where Id='".$trozo[1]."'";
if($this->Admin_model->query($query)){
redirect('/admin/categorias/');
}
} elseif($accion=="page"){
$pag = $this->uri->segment(4);
$categorias = $this->Admin_model->categorias($pag);
$datos_vista = array('categorias' => $categorias);
$this->load->view('admin/inc_head');
$this->load->view('admin/inc_menu');
$this->load->view('admin/categorias/view',$datos_vista);
$this->load->view('admin/inc_foot');
} else {
if(!$_POST){
$datos = $this->Admin_model->categorias_ver($accion);
$this->load->view('admin/inc_head');
$this->load->view('admin/inc_menu');
$this->load->view('admin/categorias/edit',$datos);
$this->load->view('admin/inc_foot');
} else {
$this->form_validation->set_rules('nombre','Nombre de la categoría','required|min_length[4]|max_length[40]');
if ($this->form_validation->run() == TRUE){
$query = "Update cms_categorias set
nombre='".$_POST['nombre']."' where Id='".$accion."'";
if($this->Admin_model->query($query)){
redirect('/admin/categorias/','location');
}
}
$datos = $this->Admin_model->categorias($pag);
$this->load->view('admin/inc_head');
$this->load->view('admin/inc_menu');
$this->load->view('admin/categorias/edit',$datos);
$this->load->view('admin/inc_foot');
}
}
}
Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <!-- Obviamente, luego sigue el resto del código HTML -->