2010-01-27 17 views
9

Oye, no estoy seguro de por qué CodeIgniter me está dando una página en blanco cuando cargo un modelo simple. Estoy rompiendo el código hacia abajo, hacia atrás, y no puedo entender qué está rompiendo. Aquí está el controlador:¿Por qué Code Igniter me da una página en blanco?

class Leads extends Controller { 

function Leads() { 
    parent::Controller(); 
    $this->load->scaffolding('leads'); 
    } 

function index() { 
    $data = array('title' => 'Lead Management'); 

    $this->load->view('html_head', $data); 
    $this->load->view('leads/home'); 
    $this->load->view('html_foot'); 

    } 

function view() { 
    $this->load->model('Leads'); 
    $this->load->view('html_head'); 
    $this->load->view('leads/view'); 
    $this->load->view('html_foot'); 
    } 

} 

Aquí está el modelo:

class Leads extends Model { 

function Leads() { 
    parent::Model(); 
} 

}

La única manera de que no entiendo una página en blanco en/punto de vista es si comento hacia fuera la carga de la modelo. No tengo absolutamente ninguna idea de lo que estoy haciendo mal, estoy copiando los ejemplos y la estructura literalmente desde el sitio de CI.

Respuesta

12

Ambas clases se denominan "Conductas". Cuando CI incluye estos, se cargan en el mismo espacio de nombres. Probablemente tenga un error "Cannot redeclare class 'Leads'". Intenta renombrar el modelo y deberías estar bien.

Editar: Guess confirmó

+0

¡SÍ! Muchas gracias! Este fue exactamente el problema. Esto debe anotarse en la documentación y la guía del usuario, no fue donde se puede encontrar. – dmanexe

+0

** Risas ** Si aún no te hubiera dado +1, te lo habrías ganado por _guess confirmed_ –

+0

Nice, +1 de mi parte también. Ni siquiera vi eso. Encuentro que el manejo de errores de CI es insuficiente. ¿Por qué no puede darle salida de error en situaciones como esta? – zombat

16

Ah, la clásica pantalla blanca Codeigniter de la muerte. Me encontré con esto la primera vez que usé CI. Es increíblemente frustrante que un marco tan popular pueda causar algo así sin producir errores.

En mi caso particular, fue porque intenté usar la clase de base de datos con MySQLi, pero mi entorno de destino no tenía instalado el módulo MySQLi. Por alguna razón, CI suprimió toda la salida de error habitual, por lo que convirtió una investigación de 2 minutos en una investigación de 2 horas.

Así que una vez dicho esto, me gustaría comprobar las siguientes cosas:

  • error_reporting conjunto de E_ALL en su php.ini, y está en display_errors.
  • Encienda log_errors también.
  • Comprobar que las clases que está utilizando no se basan en un módulo especial PHP que puede que no tenga

Si no puede encontrar nada con salida de error, vas a tener que excavar Más adentro. Si tiene xdebug instalado, le sugiero que lo use ... rodee su código en un trazo y vea dónde se está asfixiando.

Terminé teniendo que encontrar la causa de mi WSOD profundizando a través de las clases de framework en sí y volcando la salida (no estaba disponible xdebug). No es divertido, pero finalmente funcionó.

+0

¡Es cierto! :) Siguiendo su consejo, fui a 'C: \ Apache2.2 \ htdocs \ Cofix3D \ application \ config \ database.php'y eliminé la configuración de db y finalmente recibí un mensaje de error cuando intentaba cargar la página de nuevo:' Sin base de datos las configuraciones de conexión se encontraron en el archivo de configuración de la base de datos. Ahora déjenme instalar MySQL y configurarlo apropiadamente. : D –

2

Como supuso Cassy, ​​se trata de un problema con su denominación - CI no puede hacer frente a los modelos y controladores que tienen el mismo nombre. Cambia el nombre del modelo Leads a otra cosa e intenta volver a cargar la página. Eso debería soluciona el problema.

1

Otra razón para la pantalla blanca de la muerte es habilitar el almacenamiento en caché de consultas o log lutputtibg con la carpeta correspondiente no se puede escribir. ¡Eso me tiene algunas veces!

1

Acabo de resolver el mismo problema después de una noche muy desagradable pasé tropezando en las bibliotecas de CI.

Como señaló Zombat, mi problema era que olvidé instalar el módulo php5-mysql en mi cuadro de Linux.

Una vez que apt-get instaló el módulo mysql todo comenzó a funcionar como se esperaba.

Noob, lo sé. Pero esperaría un mejor comportamiento de CI en el manejo de ese tipo de excepciones. Una sola línea de registro habría ahorrado un montón de horas y maldiciones.

0

Tenía una página blanca en blanco después de usar mi primer modelo. La solución es si usa Codeigniter 2+, necesita extender desde CI_Model en lugar de Model. entonces la clase de un modelo debería decir class myModel extends CI_Model. Eso me ayudó después de 4 horas de búsqueda.

2

Distingo mis controladores y modelos agregando los nombres _controller o _model a las clases. Esto elimina la confusión de clases. Intente cambiarles el nombre como
Leads_Controler y Leads_Model.

Cuestiones relacionadas