2009-05-05 11 views
10

Mam kontroler o nazwie articles, który tworzy model artykułów, który pobiera odpowiednie dane z bazy danych.W Kohana, czy możesz wywołać błąd 404?

Chcę, jeśli metoda, którą wywołuję, zwraca false, aby wywołać błąd 404. To jest to, co do tej pory miałem.

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

$article = new Articles_Model(); 

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

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

Właśnie dodałem własną niestandardową hak, który przekierowuje użytkownika do rzeczywistej 404 (/ Artykuły/strona-not-found /), jak wywołane przez Kohana, ale czy istnieje sposób mogę wywołać jego metody wewnętrznych 404 aby Kohana zrezygnował z przetwarzania mojego kontrolera i używania mojego nowego haka?

+0

nie można po prostu użyć metody header php i następnie die()? –

+0

@Nael El Shawwa Nie, gdy dostępne są lepsze opcje. – alex

Odpowiedz

11

Działa to dla mnie:

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

Jaka wersja Kohana używasz?

+0

wersja to: 2.3.2 – alex

+2

Pamiętaj też, że jeśli $ config ['display_errors'] = TRUE; zobaczysz ślad stosu wraz ze swoją stroną 404. Jeśli chcesz STRONĘ 404 wyświetlać set display_errors = FALSE – pifantastic

11

Kohana/Ogólne/obsługi błędów/Kohana_404_Exception

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

Dzięki za odpowiedź - lepiej późno niż wcale! +1 – alex

+0

Ktoś inny może natknąć się na to pytanie w przyszłości :) – Sampson

+0

Jako aktualizację, w Kohana 3.3 jest 'throw new Kohana_HTTP_Exception_404()'. –

1

Kohana Docs Informuje sposób to zrobić:

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