2009-05-05 15 views
10

Ho un controller chiamato articles, che crea il modello di articoli che ottiene i dati rilevanti dal database.In Kohana, puoi attivare un errore 404?

Voglio, se il metodo che chiamo restituisce false, per attivare un errore 404. Questo è quello che ho finora.

$articleName = $this->uri->segment('articles'); 

$article = new Articles_Model(); 

$data = $article->getArticleUsingSlug($articleName); 

if (!$data) { 
    Kohana::show_404; // This doesn't work. 
} 

ho solo aggiunto il mio gancio personalizzato che reindirizza l'utente a un vero e proprio 404 (/ articoli/pagina-not-found /) come innescato da Kohana, ma c'è un modo per richiamare il suo metodo interno 404 fare in modo che Kohana smetta di processare il mio controller e utilizzare il mio nuovo hook?

+0

non puoi semplicemente usare il metodo di intestazione php e poi morire()? –

+0

@Nael El Shawwa Non quando ci sono opzioni migliori disponibili. La versione – alex

risposta

11

Questo funziona per me:

Event::run('system.404'); 

Quale versione di Kohana stai usando?

+0

è: 2.3.2 – alex

+2

Si noti inoltre che se $ config ['display_errors'] = TRUE; vedrai una traccia dello stack insieme alla tua pagina 404. Se vuoi SOLO una pagina 404 per visualizzare set display_errors = FALSE – pifantastic

11

Kohana/General/gestione degli errori/Kohana_404_Exception

/** 
* @param string URL of page 
* @param string custom error template 
*/ 
throw new Kohana_404_Exception([string $page [, string $template]]); 
+0

Grazie per la risposta - meglio tardi che mai! +1 – alex

+0

Qualcun altro potrebbe inciampare in questa domanda in futuro :) – Sampson

+0

Come aggiornamento, in Kohana 3.3 è 'gettare nuovo Kohana_HTTP_Exception_404()'. –

1

Kohana Docs ti dice modo per farlo:

throw HTTP_Exception::factory(404, 'File not found!');