Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/06/2010, 08:52
Avatar de Netfrank
Netfrank
 
Fecha de Ingreso: marzo-2006
Ubicación: Las Talitas - Tucumán
Mensajes: 226
Antigüedad: 18 años, 8 meses
Puntos: 3
Problema de redirección con CodeIgniter

Hola gente, estoy hace una semana renegando con un error que me devuelve el framework CodeIgniter...

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');
            
            }
            
        }
        
    } 
Algo que noté y que puede ser útil para resolver el problema, es que en el navegador, al ver el código fuente, encuentro siempre antes que cualquier HTML unos puntitos como esto:

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 --> 
Desde ya gracias por su tiempo e interés.
__________________
-- Franco D. Ocaranza
-- [email protected]
-- http://www.jmqv.com.ar/