2010-01-27 15 views
9

Ehi, non sono sicuro del motivo per cui CodeIgniter mi sta dando una pagina vuota quando carico un modello semplice. Sto infrangendo il codice, indietro, e non riesco a capire cosa si sta rompendo. Ecco il controllore:Perché Code Igniter mi dà una pagina bianca?

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'); 
    } 

} 

Ecco il modello:

class Leads extends Model { 

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

}

L'unico modo che non si ottiene una pagina bianca su/punto di vista è se io commento il caricamento del modello. Non ho assolutamente idea di cosa sto facendo male, sto copiando gli esempi e la struttura letteralmente a destra del sito di CI.

risposta

12

Entrambe le classi sono denominate "Lead". Quando CI li include, vengono caricati nello stesso spazio dei nomi. Probabilmente hai un errore "Cannot redeclare class 'Leads'". Prova a rinominare il modello e dovresti stare bene.

Edit: Guess confermato

+0

SI !!!! Grazie mille! Questo era esattamente il problema. Questo dovrebbe essere notato nella documentazione e nella guida dell'utente, non era dove trovarlo. – dmanexe

+0

** Chuckles ** Se non ti avessi già dato +1 avresti guadagnato per la _guess confirm_ –

+0

Nice, +1 anche da me. Non l'ho nemmeno visto. Trovo che l'errore di configurazione di CI sub-par. Perché non può darti un output di errore in situazioni come questa? – zombat

16

Ah, il classico schermo bianco della morte Codeigniter. Mi sono imbattuto in questo la prima volta che ho usato CI. Incredibilmente frustrante che un framework così popolare possa causare qualcosa di simile senza output di errore.

Nel mio caso particolare, è stato perché ho tentato di utilizzare la classe Database con MySQLi, ma il mio ambiente di destinazione non aveva il modulo MySQLi installato. Per qualche ragione, CI ha soppresso tutto il solito output di errore, quindi ha trasformato un'indagine di 2 minuti in un'indagine di 2 ore.

Quindi detto questo, mi piacerebbe verificare le seguenti cose:

  • error_reporting insieme al E_ALL nel tuo php.ini, e display_errors è in.
  • Attivare anche log_errors.
  • Verificare che le classi che si sta utilizzando non si basano su uno speciale modulo PHP che si potrebbe non avere

Se non riuscite a trovare nulla con output di errore, si sta andando ad avere per scavare più profondo. Se hai installato xdebug, ti consiglio caldamente di utilizzarlo ... racchiudere il codice in una traccia e vedere dove sta soffocando.

Alla fine ho dovuto trovare la causa del mio WSOD scavando attraverso le classi del framework stesso e scaricando l'output (non era disponibile xdebug). Non è divertente, ma alla fine ha funzionato.

+0

Vero! :) Seguendo il tuo consiglio sono andato a 'C: \ Apache2.2 \ htdocs \ Cofix3D \ application \ config \ database.php' e rimosso le impostazioni db e finalmente ho ricevuto un messaggio di errore quando ho provato a caricare di nuovo la pagina:' Nessun database le impostazioni di connessione sono state trovate nel file di configurazione del database. Ora permettimi di installare MySQL e configurarlo in modo appropriato. : D –

2

Come indovinato Cassy, ​​si tratta di un problema con il vostro denominazione - CI non può trattare con i modelli e controller con lo stesso nome. Rinominare il modello Leads in qualcos'altro e provare a ricaricare la pagina. Che dovrebbe risolvere il problema.

1

Un altro motivo per lo schermo bianco della morte è abilitare il caching delle query o il log lutputtibg con la rispettiva cartella non scrivibile. Questo mi ha fatto un paio di volte!

1

Ho appena risolto lo stesso problema dopo una notte molto spiacevole passata a inciampare nelle librerie CI.

Come ha fatto notare Zombat, il mio problema era che ho dimenticato di installare il modulo php5-mysql nella mia macchina Linux.

Una volta installato apt-get, il modulo mysql ha iniziato a suonare come previsto.

Noob, lo so. Ma mi aspetterei un comportamento migliore da parte dell'IC nella gestione di questo tipo di eccezioni. Una singola riga di registro avrebbe salvato un sacco di ore e maledizioni.

0

Avevo una pagina bianca vuota dopo aver usato il mio primo modello. La soluzione è che se si utilizza Codeigniter 2+ è necessario estendere da CI_Model anziché a Model. quindi la classe di un modello dovrebbe dire class myModel extends CI_Model. Questo mi ha aiutato dopo 4 ore di ricerca.

2

I differenziare i miei controller e modelli aggiungendo i nomi _controller o _model alle classi. Questo elimina la confusione delle classi. Prova a rinominarli come
Leads_Controler e Leads_Model.

Problemi correlati