2009-05-05 5 views
10

Ich habe einen Controller namens articles, der das Artikelmodell erstellt, das die relevanten Daten aus der Datenbank bezieht.Können Sie in Kohana einen 404-Fehler auslösen?

Ich möchte, wenn die Methode, die ich aufrufen false zurückgibt, um einen 404-Fehler auszulösen. Das habe ich bisher.

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

$article = new Articles_Model(); 

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

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

Habe ich nur noch meine eigenen benutzerdefinierten Haken, die den Benutzer auf einen tatsächlichen 404 umleitet (/ Artikel/Seite-not-found /), wie von Kohana ausgelöst, aber ist es eine Möglichkeit, seine interne 404-Methode aufrufe um Kohana aufzugeben, meinen Controller zu bearbeiten und meinen neuen Haken zu benutzen?

+0

können nicht nur Sie die PHP-Header-Methode verwenden und dann den()? –

+0

@Nael El Shawwa Nicht wenn es bessere Möglichkeiten gibt. – alex

Antwort

11

Dies funktioniert für mich:

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

Welche Version von Kohana verwenden Sie?

+0

Version ist: 2.3.2 – alex

+2

Beachten Sie auch, wenn $ config ['display_errors'] = TRUE; Sie werden einen Stack-Trace zusammen mit Ihrer 404-Seite sehen. Wenn Sie möchten, dass nur eine 404 Seite angezeigt wird display_errors = FALSE – pifantastic

11

Kohana/Allgemeines/Fehlerbehandlung/Kohana_404_Exception

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

Danke für die Antwort - besser spät als nie! +1 – alex

+0

Jemand anderes kann in Zukunft über diese Frage stolpern :) – Sampson

+0

Als Update, in Kohana 3.3 ist es 'werfen neue Kohana_HTTP_Exception_404()'. –

1

Kohana Docs sagen Sie Weg, es zu tun:

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